我目前正在努力使用Win32 API创建线程安全的窗口。我以前的所有应用程序都在静态上下文中使用了单个HWND。现在我想在自定义窗口类中包装多个窗口。在构造函数中,将检查窗口计数器。如果为0,则应调用静态方法register_window_class
一次,该方法通常将WNDCLASSEX结构注册到静态HINSTANCE。
static void register_window_class();
相同的原则适用于窗口类的创建,销毁和注销。
现在我不确定那些调用是否是线程安全的。我应该这样做
Window::Window()
{
if(_WindowCounter == 0)
{
register_window_class();
}
}
或这个
std::mutex _Mutex; // one mutex per window object
Window::Window()
{
_Mutex.lock();
if(_WindowCounter == 0)
{
register_window_class();
}
_Mutex.unlock();
}
还是我完全错了?