Documentation ¶
Overview ¶
Package syncs -- syncパッケージ関連のサンプルが配置されているパッケージです。
Index ¶
- func AtomicAdd() error
- func AtomicTypes() error
- func CompareAndSwap() error
- func MutexTryLock() error
- func NewRegister() mapping.Register
- func NoSync() error
- func RWMutexTryLock() error
- func UseChannel() error
- func UseCondBroadcast() error
- func UseCondSignal() error
- func UseMap() error
- func UseMutex() error
- func UseOnce() error
- func UseOnceFunc() error
- func UseOnceValue() error
- func UseOnceValues() error
- func UsePool() error
- func UseRWMutex() error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AtomicAdd ¶
func AtomicAdd() error
AtomicAdd -- atomic.AddXXX のサンプルです。
同期なしのサンプルは no_sync.go を参照。
REFERENCES ¶
func AtomicTypes ¶ added in v0.5.0
func AtomicTypes() error
AtomicTypes -- Go 1.19 から追加された sync/atomic パッケージ内の型についてのサンプルです。
Go 1.18 までの atomic.AddXXXX() を使ったサンプルは atomic_add.go を参照。
REFERENCES ¶
func CompareAndSwap ¶
func CompareAndSwap() error
CompareAndSwap -- sync/atomic.CompareAndSwap のサンプルです。
REFERENCES ¶
func MutexTryLock ¶ added in v0.5.17
func MutexTryLock() error
MutexTryLock は、Go 1.18 で追加された mutex.TryLock() についてのサンプルです。
> TryLock tries to lock m and reports whether it succeeded.
> (TryLockはmをロックしようとし、成功したかどうかを報告します。)
mutex.TryLock() は、ロック取得をノンブロッキングにしたい場合に利用できます。
REFERENCES ¶
func NewRegister ¶
NewRegister -- このパッケージ用のサンプルを登録する mapping.Register を生成します。
func RWMutexTryLock ¶ added in v0.5.17
func RWMutexTryLock() error
RWMutexTryLock は、Go 1.18 で追加された RWMutex の TryLock() と TryRLock() のサンプルです。
使い方としては、Mutex.TryLock() と同じ。RLockのTry版がTryRLock, LockのTry版がTryLockとなる。
REFERENCES ¶
func UseChannel ¶
func UseChannel() error
UseChannel -- 値の同期をチャネルを使って実現しているサンプルです。
- sync/atomic.AddXXX のサンプルは atomic_add.go を参照。
- 同期なしのサンプルは no_sync.go を参照。
基本的にチャネルは atomic.AddXXX() や sync.Mutex などと比べて遅いが プログラムとしては非同期処理の一番面倒な同期部分を丸ごとチャネルに 任せることができるので、やはり分かりやすい。
チャネルが遅いといっても、(50000*2)*5 の繰り返しで
- atomic.AddXXX が約 10 ms
- sync.Mutex が約 13 ms
- チャネル版が 約 100 ms
なので、極端にスピードが求められるシチュエーション以外は十分使える.
REFERENCES ¶
func UseCondBroadcast ¶
func UseCondBroadcast() error
UseCondBroadcast -- sync.Cond.Broadcast() のサンプルです。
- sync/atomic.AddXXX のサンプルは atomic_add.go を参照。
- 同期なしのサンプルは no_sync.go を参照。
- チャネルを使ったサンプルは use_channel.go を参照。
REFERENCES ¶
func UseCondSignal ¶
func UseCondSignal() error
UseCondSignal -- sync.Cond.Signal() のサンプルです。
- sync/atomic.AddXXX のサンプルは atomic_add.go を参照。
- 同期なしのサンプルは no_sync.go を参照。
- チャネルを使ったサンプルは use_channel.go を参照。
REFERENCES ¶
func UseMap ¶ added in v0.5.7
func UseMap() error
UseMap は、sync.Mapの使い方とそれをラップした型の紹介です。
REFERENCES ¶
func UseMutex ¶
func UseMutex() error
UseMutex -- sync.Mutex のサンプルです。
- sync/atomic.AddXXX のサンプルは atomic_add.go を参照。
- 同期なしのサンプルは no_sync.go を参照。
- チャネルを使ったサンプルは use_channel.go を参照。
REFERENCES ¶
func UseOnceFunc ¶ added in v0.5.7
func UseOnceFunc() error
UseOnceFunc は、Go 1.21 で追加された sync.OnceFunc() のサンプルです。
REFERENCES ¶
func UseOnceValue ¶ added in v0.5.7
func UseOnceValue() error
UseOnceValue は、Go 1.21 で追加された sync.OnceValue() のサンプルです。
REFERENCES ¶
func UseOnceValues ¶ added in v0.5.7
func UseOnceValues() error
UseOnceValues は、Go 1.21 で追加された sync.OnceValues() のサンプルです。
REFERENCES ¶
func UseRWMutex ¶ added in v0.5.17
func UseRWMutex() error
UseRWMutex は、sync.RWMutex のサンプルです。
RWMutexは、読み取りと書き込みで別々にロックを取れるMutex。
ドキュメントには以下のように記載されている。
> A RWMutex is a reader/writer mutual exclusion lock. The lock can be held by an arbitrary number of readers or a single writer. The zero value for a RWMutex is an unlocked mutex.
> (RWMutexは、リーダ/ライタ相互排他ロックである。このロックは、任意の数のリー ダーまたは1人のライターが保持することができる。 RWMutexのゼロ値は、アンロックされたミューテックスである。)
> If any goroutine calls Lock while the lock is already held by one or more readers, concurrent calls to RLock will block until the writer has acquired (and released) the lock, to ensure that the lock eventually becomes available to the writer. Note that this prohibits recursive read-locking.
> ロックがすでに1つ以上のリーダによって保持されている間に、いずれかのゴルーチンがLockを呼び出すと、 RLockの同時呼び出しは、ライタがロックを獲得(および解放)するまでブロックされ、ロックが最終的にライタが利用できるようになる。 これは再帰的な読み取りロックを禁止していることに注意してください。
RLockが読み取り用、Lockが書き込み用となる。RLockは複数のゴルーチンが取れるが、Lockは排他ロックとなる。
REFERENCES ¶
Types ¶
This section is empty.