// Copyright 2013 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 cgotest | |
// extern void doAdd(int, int); | |
import "C" | |
import ( | |
"sync" | |
"testing" | |
) | |
var sum struct { | |
sync.Mutex | |
i int | |
} | |
//export Add | |
func Add(x int) { | |
defer func() { | |
recover() | |
}() | |
sum.Lock() | |
sum.i += x | |
sum.Unlock() | |
var p *int | |
*p = 2 | |
} | |
func testCthread(t *testing.T) { | |
sum.i = 0 | |
C.doAdd(10, 6) | |
want := 10 * (10 - 1) / 2 * 6 | |
if sum.i != want { | |
t.Fatalf("sum=%d, want %d", sum.i, want) | |
} | |
} |