syncs

package
v0.5.31 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 5, 2024 License: MIT Imports: 9 Imported by: 0

README

サンプルリスト

このディレクトリには以下のサンプルがあります。

file example name note
atomic_add.go syncs_atomic_add atomic.AddXXX のサンプルです
atomic_compareandswap.go syncs_atomic_compareandswap sync/atomic.CompareAndSwap のサンプルです
atomic_types.go syncs_atomic_types Go 1.19 から追加された sync/atomic パッケージ内の型についてのサンプルです
use_map.go syncs_use_map sync.Mapの使い方とそれをラップした型の紹介です
no_sync.go syncs_no_sync 同期なしで非同期処理をしているサンプルです
use_channel.go syncs_use_channel 値の同期をチャネルを使って実現しているサンプルです
use_cond_broadcast.go syncs_use_cond_broadcast sync.Cond.Broadcast() のサンプルです
use_cond_siginal.go syncs_use_cond_signal sync.Cond.Signal() のサンプルです
use_mutex.go syncs_use_mutex sync.Mutex のサンプルです
use_once.go syncs_use_once sync.Onceのサンプルです
use_oncefunc.go syncs_use_oncefunc Go 1.21 で追加された sync.OnceFunc() のサンプルです
use_oncevalue.go syncs_use_oncevalue Go 1.21 で追加された sync.OnceValue() のサンプルです
use_oncevalues.go syncs_use_oncevalues Go 1.21 で追加された sync.OnceValues() のサンプルです
use_pool.go syncs_use_pool sync.Poolのサンプルです
mutex_trylock.go syncs_mutex_trylock Go 1.18 で追加された mutex.TryLock() についてのサンプルです。
use_rwmutex.go syncs_use_rwmutex sync.RWMutex のサンプルです。
rwmute_trylock.go syncs_rwmutex_trylock Go 1.18 で追加された RWMutex の TryLock() と TryRLock() のサンプルです。

Documentation

Overview

Package syncs -- syncパッケージ関連のサンプルが配置されているパッケージです。

Index

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

func NewRegister() mapping.Register

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 UseOnce added in v0.5.7

func UseOnce() error

UseOnce は、sync.Onceのサンプルです.

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 UsePool added in v0.5.9

func UsePool() error

UsePool は、sync.Poolのサンプルです。

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.

Directories

Path Synopsis
Package map は、カスタムマップを定義しています。
Package map は、カスタムマップを定義しています。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL