github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/misc/cgo/test/issue3775.go (about) 1 package cgotest 2 3 /* 4 void lockOSThreadCallback(void); 5 inline static void lockOSThreadC(void) 6 { 7 lockOSThreadCallback(); 8 } 9 int usleep(unsigned usec); 10 */ 11 import "C" 12 13 import ( 14 "runtime" 15 "testing" 16 ) 17 18 func test3775(t *testing.T) { 19 // Used to panic because of the UnlockOSThread below. 20 C.lockOSThreadC() 21 } 22 23 //export lockOSThreadCallback 24 func lockOSThreadCallback() { 25 runtime.LockOSThread() 26 runtime.UnlockOSThread() 27 go C.usleep(10000) 28 runtime.Gosched() 29 }