File: rwmutex.go

package info (click to toggle)
golang-github-anacrolix-sync 0.5.3-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 144 kB
  • sloc: makefile: 2
file content (43 lines) | stat: -rw-r--r-- 790 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package sync

import "sync"

// This RWMutex's RLock and RUnlock methods don't allow shared reading because
// there's no way to determine what goroutine has stopped holding the read
// lock when RUnlock is called. So for debugging purposes when the package is
// Enable()d, it's just like Mutex.
type RWMutex struct {
	ins Mutex        // Instrumented
	rw  sync.RWMutex // Real McCoy
}

func (me *RWMutex) Lock() {
	if noSharedLocking {
		me.ins.Lock()
	} else {
		me.rw.Lock()
	}
}

func (me *RWMutex) Unlock() {
	if noSharedLocking {
		me.ins.Unlock()
	} else {
		me.rw.Unlock()
	}
}

func (me *RWMutex) RLock() {
	if noSharedLocking {
		me.ins.Lock()
	} else {
		me.rw.RLock()
	}
}
func (me *RWMutex) RUnlock() {
	if noSharedLocking {
		me.ins.Unlock()
	} else {
		me.rw.RUnlock()
	}
}