如何使用boost :: thread暂时暂停其他线程?

时间:2011-03-08 21:05:17

标签: c++ multithreading boost boost-thread

我有一个包含2个线程(A和B)的程序。是否可以在线程B中定义一个代码块,一旦进入,就会暂停线程A,直到块完成执行?

我正在使用C ++和库boost :: thread 1.44

编辑:我遇到的问题阻止我使用互斥锁是因为我没有访问线程A中的代码,因为它是一个非线程安全的库,所以我无法控制它何时访问我的共享资源。我对我的代码进行了一些体系结构更改,现在资源不再共享,问题就解决了。

2 个答案:

答案 0 :(得分:4)

这称为锁定,在boost中你可能想要使用scoped_lock

查看此页面:scoped_lock

答案 1 :(得分:2)

除了Grammin的scoped_lock/mutex解决方案,您可以使用condition variable(可能是您问题的更常见的习惯用法),甚至是barrier