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  }