use*_*749 0 c++ static critical-section
我正在使用C++.
在.h:
static CRITICAL_SECTION g_CS;
Run Code Online (Sandbox Code Playgroud)
在.cpp:
CRITICAL_SECTION CQCommon::g_CS;
Run Code Online (Sandbox Code Playgroud)
但我想用
QGUID temp;
EnterCriticalSection(&g_CS);
temp = g_GUID++;
LeaveCriticalSection(&g_CS);
return temp;
Run Code Online (Sandbox Code Playgroud)
在一个静态函数中.我该如何调用InitializeCriticalSection(PCRITICAL_SECTION pcs);?
我可以使用以下一个:
QGUID func(XXX)
{
static {
InitializeCriticalSection(&g_CS);
}
QGUID temp;
EnterCriticalSection(&g_CS);
temp = g_GUID++;
LeaveCriticalSection(&g_CS);
return temp;
}
Run Code Online (Sandbox Code Playgroud)
DeleteCriticalSection(&g_CS)应用程序离开后如何调用?
使用MFC,似乎CCriticalSection是一个解决方案.
如果您想要一种不同的方法,您可以创建一个对象来管理它:
class CriticalSectionManager
{
public:
CriticalSectionManager()
{
InitializeCriticalSection(&g_CS);
}
~CriticalSectionManager()
{
DeleteCriticalSection(&g_CS);
}
};
void Func(void)
{
static CriticalSectionManager man;
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
现在,这将由C++自动管理.首次输入功能时将初始化临界区,并在程序退出时删除.
此外,你可以通过在类等中使用实际的PCRITICAL_SECTION变量来扩展它.等等.
| 归档时间: |
|
| 查看次数: |
3825 次 |
| 最近记录: |