aboutsummaryrefslogtreecommitdiff
path: root/src/lib/sync/mutex_test.go
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2008-12-04 12:51:36 -0800
committerRuss Cox <rsc@golang.org>2008-12-04 12:51:36 -0800
commitbf3dd3f0efe5b45947a991e22660c62d4ce6b671 (patch)
treeec0ffdfb73b32bedaed4f9f6e830f1368267e9c2 /src/lib/sync/mutex_test.go
parent3e8faa640fa49f432060097e8dabbf8e4ecc2ef9 (diff)
downloadgo-bf3dd3f0efe5b45947a991e22660c62d4ce6b671.tar.xz
add mutex.Mutex
R=r DELTA=349 (348 added, 0 deleted, 1 changed) OCL=20380 CL=20472
Diffstat (limited to 'src/lib/sync/mutex_test.go')
-rw-r--r--src/lib/sync/mutex_test.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/lib/sync/mutex_test.go b/src/lib/sync/mutex_test.go
new file mode 100644
index 0000000000..7a6dd1814d
--- /dev/null
+++ b/src/lib/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++ {
+ sys.semacquire(s);
+ sys.semrelease(s);
+ }
+ cdone <- true;
+}
+
+export func TestSemaphore(t *testing.T) {
+ s := new(int32);
+ *s = 1;
+ c := new(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;
+}
+
+export func TestMutex(t *testing.T) {
+ m := new(Mutex);
+ c := new(chan bool);
+ for i := 0; i < 10; i++ {
+ go HammerMutex(m, c);
+ }
+ for i := 0; i < 10; i++ {
+ <-c;
+ }
+}
+