summaryrefslogtreecommitdiff
path: root/src/pkg/sync/mutex_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/sync/mutex_test.go')
-rw-r--r--src/pkg/sync/mutex_test.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/pkg/sync/mutex_test.go b/src/pkg/sync/mutex_test.go
new file mode 100644
index 000000000..819dbb9de
--- /dev/null
+++ b/src/pkg/sync/mutex_test.go
@@ -0,0 +1,53 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// GOMAXPROCS=10 gotest
+
+package sync
+
+import (
+ "sync";
+ "testing"
+)
+
+func HammerSemaphore(s *int32, cdone chan bool) {
+ for i := 0; i < 1000; i++ {
+ semacquire(s);
+ semrelease(s);
+ }
+ cdone <- true;
+}
+
+func TestSemaphore(t *testing.T) {
+ s := new(int32);
+ *s = 1;
+ c := make(chan bool);
+ for i := 0; i < 10; i++ {
+ go HammerSemaphore(s, c);
+ }
+ for i := 0; i < 10; i++ {
+ <-c;
+ }
+}
+
+
+func HammerMutex(m *Mutex, cdone chan bool) {
+ for i := 0; i < 1000; i++ {
+ m.Lock();
+ m.Unlock();
+ }
+ cdone <- true;
+}
+
+func TestMutex(t *testing.T) {
+ m := new(Mutex);
+ c := make(chan bool);
+ for i := 0; i < 10; i++ {
+ go HammerMutex(m, c);
+ }
+ for i := 0; i < 10; i++ {
+ <-c;
+ }
+}
+