【发布时间】:2012-12-27 18:48:31
【问题描述】:
有没有办法让 boost mutex 在任何等待线程上抛出异常?我有一个问题,其中一个对象被删除,但由于软件库的性质,线程可能仍在对象内的互斥锁处等待,并且当互斥锁关闭时抛出一个相当讨厌的异常。我想我可以使用多个互斥计数器,但这可能会导致性能下降。我想要发生的是互斥体在关闭时在等待的任何线程上抛出异常,以便展开堆栈。有没有一种独立于平台的干净方法?
【问题讨论】:
-
其实没那么复杂。如果我关闭互斥锁,我希望所有等待的线程都获得标准 C++ 异常,而不是抛出断言或导致内存泄漏。
-
如何“关闭”互斥锁?您的整个问题非常模糊,最终陷入这种情况似乎是糟糕的设计。等待线程在遇到异常时应该做什么?这些都没有任何意义,我很抱歉。
-
您的对象生命周期似乎有问题,而不是互斥锁和线程
标签: c++ boost boost-thread