最終更新:2025-03-13 (木) 23:42:56 (42d)
ミューテックス
Top / ミューテックス
mutual exclusion
相互排他
クリティカルセクションでアトミック性を確保するための同期機構の一種
挙動はセマフォ変数の初期値を1にする事と等価。
メモ
- ミューテックスの所有権を確保するまでブロック
複数のプロセスでの同期
- ミューテックスの概念は、クリティカルセクションと同じでミューテックスオブジェクトの所有権を取得するまで、スレッドを待機させるというものです
- ただし、ミューテックスオブジェクトはプロセス間で共有することができるのです
Windows API
- CreateMutex?
Linux
- DECLARE_MUTEX?(name) - 1で初期化
- DECLARE_MUTEX_LOCKED?(name) - 0で初期化
- init_MUTEX?(struct semaphore *sem)
- init_MUTEX_LOCKED?(struct semaphore *sem)
pthread
- pthread_mutex_init
- pthread_mutex_lock
- pthread_mutex_trylock
- pthread_mutex_unlock?
- pthread_mutex_destroy
C++11
- std::mutex
- std::unique_lock?
- std::lock_guard
公平ミューテックス (Fair Mutex)
- 待機スレッドの待ち行列を内包したミューテックス
- オーバーヘッドはそれなりに大きい
https://zenn.dev/yohhoy/articles/multithreading-toolbox#公平ミューテックス(fair-mutex)