3
我是新來的助推線程庫。我有一種情況,我在一個函數中獲取scoped_lock
,並需要在被調用者中等待它。boost-threads:如何將scoped_lock傳遞給被調用者?
的代碼上的行:
class HavingMutex
{
public:
...
private:
static boost::mutex m;
static boost::condition_variable *c;
static void a();
static void b();
static void d();
}
void HavingMutex::a()
{
boost::mutex::scoped_lock lock(m);
...
b() //Need to pass lock here. Dunno how !
}
void HavingMutex::b(lock)
{
if (some condition)
d(lock) // Need to pass lock here. How ?
}
void HavingMutex::d(//Need to get lock here)
{
c->wait(lock); //Need to pass lock here (doesn't allow direct passing of mutex m)
}
基本上,在功能d()
,我需要訪問範圍的鎖我在a()
獲取,這樣我可以在其上等待。我怎麼做 ? (其他一些線程會通知)。
或者我可以直接等待互斥鎖而不是鎖嗎?
任何幫助表示讚賞。謝謝 !
我嘗試這樣做,認爲這是錯誤的,因爲我的代碼被死鎖。我剛剛發現那是由於別的原因。這似乎工作。謝謝 ! – 2012-08-01 17:42:00