我正在开发一个类,可以在调用main()之前实例化它。我有一个由互斥锁保护的关键部分是代码。遗憾的是,应用程序在AIX上失败,因为在初始化线程之前调用了代码。我想在代码中添加一个检查,以避免在线程未准备好时进行互斥锁定,并在线程初始化后使用锁定。
我使用IBM XL C / C ++ v.8.0
在AIX 5.3上工作答案 0 :(得分:0)
您可以使用这样的全局布尔:
bool main_called = false;
class AClass {
AClass()
{
if (main_called) mutex_aquire();
...
if (main_called) mutex_release();
}
};
int main()
{
main_called = true;
...
}
但是,您对实施的描述显示出糟糕的设计迹象。尝试避免全局变量,或者至少尝试在调用main之后初始化它们:
AClass *aclass;
int main()
{
aclass = new AClass();
}