// 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) } }