2011-03-08 121 views
1

我有一個2線程(A和B)的程序。是否有可能在線程B中定義一個代碼塊,它一旦進入暫停線程A直到塊完成執行?我該如何使用boost :: thread臨時暫停其他線程?

我使用C++和庫的boost ::線程1.44

編輯:我的問題,這讓我無法只使用一個互斥的是,我沒有訪問代碼線程A,因爲它的一個非線程安全的庫,所以我無法控制它何時訪問我的共享資源。我對代碼做了一些體系結構更改,現在不再共享資源並解決問題。

+4

如果線程A持有線程B所需的鎖定會怎麼樣? – 2011-03-08 21:07:55

+0

@Mike丹尼爾斯,好點!我重新構建了我的代碼,以便能夠使用互斥鎖 – lms 2011-03-09 00:08:07

回答

2

除了Grammin的scoped_lock/mutex解決方案,您可以使用condition variable(可能是一個比較常見的成語你的問題),甚至barrier

4

這就是所謂的鎖定和提升你想使用的scoped_lock

查看此頁面出來:scoped_lock