如何在 C++ 中初始化静态成员使用功能
我正在使用 C++。
在.h
中:
static CRITICAL_SECTION g_CS;
在.cpp
中:
CRITICAL_SECTION CQCommon::g_CS;
但我想
QGUID temp;
EnterCriticalSection(&g_CS);
temp = g_GUID++;
LeaveCriticalSection(&g_CS);
return temp;
在一个静态函数中使用。 如何调用 InitializeCriticalSection(PCRITICAL_SECTION pcs);
?
我可以使用以下之一:
QGUID func(XXX)
{
static {
InitializeCriticalSection(&g_CS);
}
QGUID temp;
EnterCriticalSection(&g_CS);
temp = g_GUID++;
LeaveCriticalSection(&g_CS);
return temp;
}
应用离开后如何调用 DeleteCriticalSection(&g_CS)
?
使用MFC,看来CCriticalSection是一个解决方案。
I am using C++.
in .h
:
static CRITICAL_SECTION g_CS;
in .cpp
:
CRITICAL_SECTION CQCommon::g_CS;
but I want to use
QGUID temp;
EnterCriticalSection(&g_CS);
temp = g_GUID++;
LeaveCriticalSection(&g_CS);
return temp;
in one static function.
How can I invoke InitializeCriticalSection(PCRITICAL_SECTION pcs);
?
Can I using the following one:
QGUID func(XXX)
{
static {
InitializeCriticalSection(&g_CS);
}
QGUID temp;
EnterCriticalSection(&g_CS);
temp = g_GUID++;
LeaveCriticalSection(&g_CS);
return temp;
}
And how can I invoke DeleteCriticalSection(&g_CS)
after app leave?
Using MFC, it seems CCriticalSection is a solution.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您想要不同的方法,您可以创建一个对象来管理它:
现在将由 C++ 自动管理。临界区会在函数第一次进入时被初始化,并在程序退出时被删除。
此外,您可以通过在类中使用实际的 PCRITICAL_SECTION 变量等来扩展它。
If you want a different approach you can create an object to manage it:
This will now be managed automatically by C++. The critical section will be initialized when the function is first entered, and deleted when the program exits.
Furthermore you can extend this by having the actual PCRITICAL_SECTION variable inside the class, etc.. etc..
在代码的入口点 - 主函数中,调用 init:
In the entry point to your code - the main function, call the init:
那么,今天的最佳实践是使用“范围锁定”模式而不是 EnterXXX 和 LeaveXX 之类的函数。看看 boos 提供了什么。
无论如何,RAII 方法可以在以下方面为您提供帮助:
Well, today the best practice is to use "scoped lock" pattern instead of EnterXXX and LeaveXX -like functions. Take a look at what boos has to offer.
Regardless, an RAII approach can help you here: