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