仅为流程初始化一次关键部分

atV*_*elu 6 windows com dll winapi

在多线程应用程序中,有没有办法确保临界区只被初始化一次,除了将代码放在DLL main()中?

小智 5

在Windows Vista上,您可以使用一次性初始化函数.使用一次性初始化显示如何使用它们来确保仅初始化事件一次.


era*_*ran 3

我建议用一个类包装 CRITICAL_SECTION,该类将在其构造函数和析构函数中处理临界区对象的初始化和未初始化。这样,在大多数情况下您将是线程安全的。(您必须确保在其构造函数完成之前没有人访问该对象,但这相对容易。)

您可以使用几个常见的 CRITICAL_SECTION 包装器。MFC 的CCriticalSection是显而易见的选择,但您也可以创建自己的。