スレッド間の同期に関連する機能がUnix内でどのように実装されているかを知りたいだけです。たとえば、pthread_mutex_lock
を呼び出すとどうなりますか?使用中のポインターはありますか?ソースコードへの参照は本当に役立ちます。
これは複雑であり、UnixからUnixバリアントとは異なります。
たとえば、Linuxでは、Futex(Short for Fast Userspace Mutex)というシステムが使用されます。
このシステムでは、アトミックな増分およびテスト操作がユーザー空間のミューテックス変数で実行されます。
操作の結果がロックに競合がないことを示している場合、pthread_mutex_lockの呼び出しは、コンテキストがカーネルに切り替えられることなく返されるため、ミューテックスを取得する操作は非常に高速になります。
競合が検出された場合にのみ、システムコール(futexと呼ばれます)が実行され、カーネルへのコンテキストスイッチが発生し、ミューテックスが解放されるまで呼び出しプロセスがスリープ状態になります。
特に信頼性の高い、または優先度の高い継承ミューテックスには、さらに多くの詳細がありますが、これがその本質です。
詳細については、 http://linux.die.net/man/2/futex および http://en.wikipedia.org/wiki/Futex を参照してください