0

我正在开发一个类,可以在调用 main() 之前对其进行实例化。我有一个受互斥锁保护的关键部分是代码。不幸的是,应用程序在 AIX 上失败,因为代码在线程初始化之前被调用。我想在代码中添加一个检查以避免线程未准备好时的互斥锁,并在线程初始化后使用锁定。

我使用 IBM XL C/C++ v.8.0 在 AIX 5.3 上工作

4

1 回答 1

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();
}
于 2009-10-25T15:07:49.690 回答