github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/src/pkg/runtime/futex_test.go (about) 1 // Copyright 2013 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // +build linux freebsd 6 7 package runtime_test 8 9 import ( 10 . "runtime" 11 "testing" 12 "time" 13 ) 14 15 func TestFutexsleep(t *testing.T) { 16 ch := make(chan bool, 1) 17 var dummy uint32 18 start := time.Now() 19 go func() { 20 Entersyscall() 21 Futexsleep(&dummy, 0, (1<<31+100)*1e9) 22 Exitsyscall() 23 ch <- true 24 }() 25 select { 26 case <-ch: 27 t.Errorf("futexsleep finished early after %s!", time.Since(start)) 28 case <-time.After(time.Second): 29 Futexwakeup(&dummy, 1) 30 } 31 }