2
如果你有一個線程(線程1)阻擋在sem_wait()
和另一個線程(線程2)破壞是非常旗語,使用sem_destroy()
,那麼會發生什麼線程1?sem_destroy一個信號量別人擁有一個sem_wait嗎?
A quick search on the internet tells me that it produces undefined behavior:
銷燬信號量,目前被阻塞在其他的進程或線程(以sem_wait(3))將產生不確定的行爲。
但是,我碰巧看到這被用在許多多線程C++應用程序中。
我的主要問題:
- 莫不是在此的任何目的是什麼?
- 他們試圖達到什麼目的(例如,這會隱式終止線程)?
- 這不應該是非常不安全的嗎?
'它只是恰巧,我一直在讀在這裏,有許多最近的多線程C++應用程序來學習一些好的編碼實踐,我已經看到了這一點做多times'這是極其非不足爲奇。即使您看到它在Linux內核中完成,也不要依賴未定義的行爲。 – Falmarri