• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2016 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package main
6
7// The stubs for the C functions read and write the same slot on the
8// g0 stack when copying arguments in and out.
9
10/*
11#cgo CFLAGS: -fsanitize=thread
12#cgo LDFLAGS: -fsanitize=thread
13
14int Func1() {
15	return 0;
16}
17
18void Func2(int x) {
19	(void)x;
20}
21*/
22import "C"
23
24func main() {
25	const N = 10000
26	done := make(chan bool, N)
27	for i := 0; i < N; i++ {
28		go func() {
29			C.Func1()
30			done <- true
31		}()
32		go func() {
33			C.Func2(0)
34			done <- true
35		}()
36	}
37	for i := 0; i < 2*N; i++ {
38		<-done
39	}
40}
41