0
我有兩個功能,Funct1
和Funct2
。他們都在內部呼叫Funct3
。 Funct
1和Funct2
由2個不同的線程調用。鎖定由不同線程執行的多個功能
我想要的是,當Funct1
正在進行由Thread1
,然後Func2
不應該被稱爲Thread2
,或基本上Funct3
不應該在同一時間兩個線程調用。
如果我在Funct1
和Funct2
中使用互斥量,並且Funct1
的執行開始,那麼這個互斥鎖是否會禁止Funct2
啓動?
在這種情況下應該做什麼?下面是示例代碼:
class A
{
boost::mutex mtx;
public:
void Func1()
{
boost::mutex::scoped_lock lock(this->mtx);
/* -------- */
Func3();
}
void Func2()
{
boost::mutex::scoped_lock lock(this->mtx);
/* --------- */
Func3();
}
void Func3()
{
//do something
}
};
互斥量僅在代碼塊由多個線程訪問(執行)時纔有意義。就你而言,似乎Func3是由兩個線程執行的唯一地方。你爲什麼不在Func3中插入'lock'? – 9dan 2014-09-25 06:35:17
不,Func1也由10個線程執行,並且Func2在另一個線程中運行。 – garima721 2014-09-25 07:44:35