pthreadミューテックスをプロセス間で共有することができますが、共有ミューテックスの初期化に関する質問/回答は見つかりませんでした。プロセス間でpthreadミューテックスを正しく使用する
私が理解する限り、プロセス共有ミューテックスを使用する一般的な方法は次のとおりです。共有メモリのブロックを割り当て、共有メモリブロックのpthread mutexを初期化して使用します。
共有メモリを作成する場合、複数のプロセスが同じキーIDを持つ共有メモリブロックを割り当てようとすると、OSによって処理されます。わかりませんが、どうやって共有メモリーブロックのmutexを安全に初期化できますか?
pthread_mutex_initは、異なるプロセスから同時にpthread_mutex_tを初期化するための安全な方法を提供していません。はいの場合、共有「相互排除」を初期化するプロセスに排他アクセスを提供するにはどうすればよいですか?そして、別のプロセスがmutexを正常に初期化したかどうかをどうすれば確認できますか?
2番目の質問は、mutexをブロックしているプロセスがクラッシュした場合です。 OK、そのようなケースを処理し、対応するエラーコードを返す強力なミューテックスがあります。共有メモリブロックはどうですか?プロセスが共有メモリを使用して破壊する最後のプロセスであるかどうかは、プロセスが注意する必要があるようです。
好奇心ではなく、代わりにPOSIXセマフォを使用してみましょう。 http://man7.org/linux/man-pages/man7/sem_overview.7.html pthread_mutexとは異なり、POSIXセマフォはプロセス間通信のためのものではありません。 –
@jameslargeこれは良い質問です。セマフォの代わりにmutexを使うことを勧めている人もいます。たとえば、http://stackoverflow.com/q/6477525/465662私は本当の利点を見つけようとしています – Rom098