package
0.5.36
Repository: https://github.com/devlights/try-golang.git
Documentation: pkg.go.dev

# README

サンプルリスト

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

fileexample namenote
atomic_add.gosyncs_atomic_addatomic.AddXXX のサンプルです
atomic_compareandswap.gosyncs_atomic_compareandswapsync/atomic.CompareAndSwap のサンプルです
atomic_types.gosyncs_atomic_typesGo 1.19 から追加された sync/atomic パッケージ内の型についてのサンプルです
use_map.gosyncs_use_mapsync.Mapの使い方とそれをラップした型の紹介です
no_sync.gosyncs_no_sync同期なしで非同期処理をしているサンプルです
use_channel.gosyncs_use_channel値の同期をチャネルを使って実現しているサンプルです
use_cond_broadcast.gosyncs_use_cond_broadcastsync.Cond.Broadcast() のサンプルです
use_cond_siginal.gosyncs_use_cond_signalsync.Cond.Signal() のサンプルです
use_mutex.gosyncs_use_mutexsync.Mutex のサンプルです
use_once.gosyncs_use_oncesync.Onceのサンプルです
use_oncefunc.gosyncs_use_oncefuncGo 1.21 で追加された sync.OnceFunc() のサンプルです
use_oncevalue.gosyncs_use_oncevalueGo 1.21 で追加された sync.OnceValue() のサンプルです
use_oncevalues.gosyncs_use_oncevaluesGo 1.21 で追加された sync.OnceValues() のサンプルです
use_pool.gosyncs_use_poolsync.Poolのサンプルです
mutex_trylock.gosyncs_mutex_trylockGo 1.18 で追加された mutex.TryLock() についてのサンプルです。
use_rwmutex.gosyncs_use_rwmutexsync.RWMutex のサンプルです。
rwmute_trylock.gosyncs_rwmutex_trylockGo 1.18 で追加された RWMutex の TryLock() と TryRLock() のサンプルです。

# Packages

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

# Functions

AtomicAdd -- atomic.AddXXX のサンプルです。 同期なしのサンプルは no_sync.go を参照。 # REFERENCES - https://pkg.go.dev/[email protected] - https://pkg.go.dev/sync/[email protected] - https://levelup.gitconnected.com/go-a-benchmark-to-compare-synchronization-techniques-ed73e118ec35.
AtomicTypes -- Go 1.19 から追加された sync/atomic パッケージ内の型についてのサンプルです。 Go 1.18 までの atomic.AddXXXX() を使ったサンプルは atomic_add.go を参照。 # REFERENCES - https://dev.to/emreodabas/quick-guide-go-119-features-1j40 - https://go.dev/doc/go1.19#atomic_types.
CompareAndSwap -- sync/atomic.CompareAndSwap のサンプルです。 # REFERENCES - https://pkg.go.dev/[email protected] - https://pkg.go.dev/sync/[email protected].
MutexTryLock は、Go 1.18 で追加された mutex.TryLock() についてのサンプルです。 > TryLock tries to lock m and reports whether it succeeded.
NewRegister -- このパッケージ用のサンプルを登録する mapping.Register を生成します。.
NoSync -- 同期なしで非同期処理をしているサンプルです。 # REFERENCES - https://pkg.go.dev/[email protected] - https://pkg.go.dev/sync/[email protected] - https://levelup.gitconnected.com/go-a-benchmark-to-compare-synchronization-techniques-ed73e118ec35.
RWMutexTryLock は、Go 1.18 で追加された RWMutex の TryLock() と TryRLock() のサンプルです。 使い方としては、Mutex.TryLock() と同じ。RLockのTry版がTryRLock, LockのTry版がTryLockとなる。 # REFERENCES - https://pkg.go.dev/[email protected]#RWMutex.TryLock - https://pkg.go.dev/[email protected]#RWMutex.TryRLock.
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 なので、極端にスピードが求められるシチュエーション以外は十分使える.
UseCondBroadcast -- sync.Cond.Broadcast() のサンプルです。 - sync/atomic.AddXXX のサンプルは atomic_add.go を参照。 - 同期なしのサンプルは no_sync.go を参照。 - チャネルを使ったサンプルは use_channel.go を参照。 # REFERENCES - https://pkg.go.dev/[email protected] - https://pkg.go.dev/sync/[email protected] - https://bit.ly/3i4X1ov - https://mattn.kaoriya.net/software/lang/go/20140625223125.htm.
UseCondSignal -- sync.Cond.Signal() のサンプルです。 - sync/atomic.AddXXX のサンプルは atomic_add.go を参照。 - 同期なしのサンプルは no_sync.go を参照。 - チャネルを使ったサンプルは use_channel.go を参照。 # REFERENCES - https://pkg.go.dev/[email protected] - https://pkg.go.dev/sync/[email protected] - https://bit.ly/3i4X1ov - https://mattn.kaoriya.net/software/lang/go/20140625223125.htm.
UseMap は、sync.Mapの使い方とそれをラップした型の紹介です。 # REFERENCES - https://hjr265.me/blog/synchronization-constructs-in-go-standard-library/ - https://pkg.go.dev/[email protected]#Map.
UseMutex -- sync.Mutex のサンプルです。 - sync/atomic.AddXXX のサンプルは atomic_add.go を参照。 - 同期なしのサンプルは no_sync.go を参照。 - チャネルを使ったサンプルは use_channel.go を参照。 # REFERENCES - https://pkg.go.dev/[email protected] - https://pkg.go.dev/sync/[email protected] - https://levelup.gitconnected.com/go-a-benchmark-to-compare-synchronization-techniques-ed73e118ec35.
UseOnce は、sync.Onceのサンプルです.
UseOnceFunc は、Go 1.21 で追加された sync.OnceFunc() のサンプルです。 # REFERENCES - https://pkg.go.dev/[email protected]#OnceFunc.
UseOnceValue は、Go 1.21 で追加された sync.OnceValue() のサンプルです。 # REFERENCES - https://pkg.go.dev/[email protected]#OnceValue.
UseOnceValues は、Go 1.21 で追加された sync.OnceValues() のサンプルです。 # REFERENCES - https://pkg.go.dev/[email protected]#OnceValues.
UsePool は、sync.Poolのサンプルです。 # REFERENCES - https://pkg.go.dev/[email protected]#Pool.
UseRWMutex は、sync.RWMutex のサンプルです。 RWMutexは、読み取りと書き込みで別々にロックを取れるMutex。 ドキュメントには以下のように記載されている。 > A RWMutex is a reader/writer mutual exclusion lock.