我有一个在两个线程之间共享的关键部分:
TCriticalSection lock_measDataBuff;
我已将此变量声明为全局变量。现在因为Delphi样式类必须使用operator new构造,所以我修改了上面的声明如下:
TCriticalSection *lock_measDataBuff;
使用operator new初始化锁定变量的最佳位置在哪里?使用operator delete完成全局变量的最佳位置在哪里?应该是WinMain方法吗?访问锁变量的其中一个类的构造函数?或者代码中的其他地方?
答案 0 :(得分:2)
我会使用std::auto_ptr
或boost::unique_ptr
为您处理所有这些事情,例如:
#include <memory>
std::auto_ptr<TCriticalSection> lock_measDataBuff(new TCriticalSection);
答案 1 :(得分:1)
在创建全局变量时,需要在创建线程之前进行初始化,这将是主要的,并且在线程结束后释放内存的最佳位置