aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/sync/mutex_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/sync/mutex_test.go')
-rw-r--r--libgo/go/sync/mutex_test.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/libgo/go/sync/mutex_test.go b/libgo/go/sync/mutex_test.go
index 98c1bf2..cca0986 100644
--- a/libgo/go/sync/mutex_test.go
+++ b/libgo/go/sync/mutex_test.go
@@ -60,6 +60,12 @@ func BenchmarkContendedSemaphore(b *testing.B) {
func HammerMutex(m *Mutex, loops int, cdone chan bool) {
for i := 0; i < loops; i++ {
+ if i%3 == 0 {
+ if m.TryLock() {
+ m.Unlock()
+ }
+ continue
+ }
m.Lock()
m.Unlock()
}
@@ -71,7 +77,19 @@ func TestMutex(t *testing.T) {
t.Logf("got mutexrate %d expected 0", n)
}
defer runtime.SetMutexProfileFraction(0)
+
m := new(Mutex)
+
+ m.Lock()
+ if m.TryLock() {
+ t.Fatalf("TryLock succeeded with mutex locked")
+ }
+ m.Unlock()
+ if !m.TryLock() {
+ t.Fatalf("TryLock failed with mutex unlocked")
+ }
+ m.Unlock()
+
c := make(chan bool)
for i := 0; i < 10; i++ {
go HammerMutex(m, 1000, c)