我有一个包含2个线程(A和B)的程序。是否可以在线程B中定义一个代码块,一旦进入,就会暂停线程A,直到块完成执行?
我正在使用C ++和库boost :: thread 1.44
编辑:我遇到的问题阻止我使用互斥锁是因为我没有访问线程A中的代码,因为它是一个非线程安全的库,所以我无法控制它何时访问我的共享资源。我对我的代码进行了一些体系结构更改,现在资源不再共享,问题就解决了。答案 0 :(得分:4)
这称为锁定,在boost中你可能想要使用scoped_lock
查看此页面:scoped_lock
答案 1 :(得分:2)
除了Grammin的scoped_lock/mutex
解决方案,您可以使用condition variable(可能是您问题的更常见的习惯用法),甚至是barrier。