shd*_*shd 9 c++ multithreading boost mutex
class temp
{
boost::mutex mx;
void CriticalCode() {
boost::mutex::scoped_lock scoped_lock(mx);
//Do Something
return;
}
}
Run Code Online (Sandbox Code Playgroud)
如果在heap(temp* T = new temp())上分配了这个类,那么这是否是线程安全的(对于每个实例,并非所有实例一起)?
如果我创建boost::mutex mx- > boost::mutex* mx,并在构造函数中分配它,以便它将在堆上分配,代码是否也是线程安全的?
如果对1和2的答案为否,我怎样才能使每个实例线程安全?
1)如果在堆上分配了这个类(temp*T = new temp()),这是否是线程安全的(对于每个实例,并非所有实例都在一起?
是.由于mx不是类的静态成员,因此每个类的实例将有一个锁.
2)如果我使用boost :: mutex mx - > boost :: mutex*mx,并在构造函数中分配它以便它将在堆上分配,代码是否也是线程安全的?
是.但是线程安全只能基于每个实例.
3)如果现在回答1和2,我怎样才能使每个实例线程安全?
答案是肯定的,所以你很好.
如果有人想知道如何使用一个锁使所有实例的线程安全 - 你可以使mx成为类的静态变量.
| 归档时间: |
|
| 查看次数: |
7697 次 |
| 最近记录: |