2013-03-21 122 views

回答

4

是的。互斥体是线程之间共享的进程资源。只要确保另一个线程在被销毁或之后无法访问该互斥体。

这是一种非常常见的模式,用一个互斥体构造一个对象,然后在对象被销毁时破坏该互斥体。如果你必须确保同一个线程销毁它创建的互斥锁,这将是非常令人不快的 - 该线程可能不再存在。如果它是一个共享互斥进程,则创建它的进程可能不再存在。

+0

谢谢大卫。如果我想让互斥体成为每个对象,它可以成为类的一部分吗?如果是这样,我应该将其定义为常规数据记忆器吗? 例如 - \t pthread_mutex_t \t m_spinlock; – user1035931 2013-03-21 10:49:58

+0

是的,你可以做到这一点。只是不要试图用这个互斥体来保护这个类的破坏。通常,这样一个对象将存在于一个本身受互斥体保护的集合中。将对象添加到集合中或从集合中删除以销毁将在该外部互斥锁的保护下完成。您也可以使用智能指针。 – 2013-03-21 11:04:53