diff options
| author | Russ Cox <rsc@golang.org> | 2008-12-04 12:51:36 -0800 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2008-12-04 12:51:36 -0800 |
| commit | bf3dd3f0efe5b45947a991e22660c62d4ce6b671 (patch) | |
| tree | ec0ffdfb73b32bedaed4f9f6e830f1368267e9c2 /src/lib/sync/mutex_test.go | |
| parent | 3e8faa640fa49f432060097e8dabbf8e4ecc2ef9 (diff) | |
| download | go-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.go | 53 |
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; + } +} + |
