diff options
Diffstat (limited to 'src/cmd/cgo/internal/test/testx.go')
-rw-r--r-- | src/cmd/cgo/internal/test/testx.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cmd/cgo/internal/test/testx.go b/src/cmd/cgo/internal/test/testx.go index 6a8e97ddf3..0e2a51a522 100644 --- a/src/cmd/cgo/internal/test/testx.go +++ b/src/cmd/cgo/internal/test/testx.go @@ -24,6 +24,7 @@ import ( /* // threads extern void doAdd(int, int); +extern int callGoInCThread(int); // issue 1328 void IntoC(void); @@ -146,6 +147,10 @@ func Add(x int) { *p = 2 } +//export goDummy +func goDummy() { +} + func testCthread(t *testing.T) { if (runtime.GOOS == "darwin" || runtime.GOOS == "ios") && runtime.GOARCH == "arm64" { t.Skip("the iOS exec wrapper is unable to properly handle the panic from Add") @@ -159,6 +164,15 @@ func testCthread(t *testing.T) { } } +// Benchmark measuring overhead from C to Go in a C thread. +// Create a new C thread and invoke Go function repeatedly in the new C thread. +func benchCGoInCthread(b *testing.B) { + n := C.callGoInCThread(C.int(b.N)) + if int(n) != b.N { + b.Fatal("unmatch loop times") + } +} + // issue 1328 //export BackIntoGo |