12345678910111213141516171819202122232425262728293031323334353637383940 |
- // Copyright 2016 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package main
- // The stubs for the C functions read and write the same slot on the
- // g0 stack when copying arguments in and out.
- /*
- #cgo CFLAGS: -fsanitize=thread
- #cgo LDFLAGS: -fsanitize=thread
- int Func1() {
- return 0;
- }
- void Func2(int x) {
- (void)x;
- }
- */
- import "C"
- func main() {
- const N = 10000
- done := make(chan bool, N)
- for i := 0; i < N; i++ {
- go func() {
- C.Func1()
- done <- true
- }()
- go func() {
- C.Func2(0)
- done <- true
- }()
- }
- for i := 0; i < 2*N; i++ {
- <-done
- }
- }
|