1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| // Copyright 2012 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
|
| /*
| int sync;
|
| void Notify(void)
| {
| __sync_fetch_and_add(&sync, 1);
| }
|
| void Wait(void)
| {
| while(__sync_fetch_and_add(&sync, 0) == 0) {}
| }
| */
| import "C"
|
| func main() {
| data := 0
| go func() {
| data = 1
| C.Notify()
| }()
| C.Wait()
| _ = data
| }
|
|