私はpthread APIを勉強し始めました。私はさまざまな書籍やウェブサイトを使用してきましたが、それらがすべて報告されていると判断して、pthread同期関数(mutexを含む関数など)はすべてユニプロセッサとマルチプロセッサ環境の両方で動作します。しかし、これらの情報源のどれも明示的に言及していないので、実際にそうであるかどうかを知りたがっています(当然、私は100%確信したかったと思います)。pthread APIはマルチプロセッサ環境で同期を提供しますか?
異なるCPU上で実行されている2つのスレッドが同時に同じmutex上にロック(たとえばpthread_mutex_lock()
)と呼ばれる場合、このルーチンの実行は並列ではなく順次実行されますか?最初のロックが終了し、それを呼び出すスレッドがクリティカルセクションへのプライベートアクセスを持つと、別のCPU上の他のスレッドによって実行されるロックは、後のスレッドを中断させますか?
あなたの質問に対する回答が否定的だった場合の結果を1秒間だけ想像してください。 –
はい。もしそうでなければそれほど役に立たないでしょう。 –