でブロックしているスレッド (thread1) がありsem_wait()
、別のスレッド (thread2) が を使用してそのセマフォを破壊してsem_destroy()
いる場合、thread1 はどうなりますか?
インターネットで簡単に検索すると、未定義の動作が発生することがわかります。
他のプロセスまたはスレッドが現在 (sem_wait(3) で) ブロックされているセマフォを破棄すると、未定義の動作が発生します。
しかし、たまたまこれが多くのマルチスレッド C++ アプリケーションで使用されているのを見ました。
私の主な質問:
- これには何か目的があるのでしょうか?
- 彼らは何を達成しようとしていましたか (たとえば、暗黙的にスレッドを終了させますか)?
- それは非常に危険なことではありませんか?