WorkThread *WorkThread::instance() { static QMutex s_mutex; QMutexLocker lock(&s_mutex); if(!m_instance){ m_instance=new WorkThread(); } return m_instance; }
时间: 2024-04-02 07:35:38 浏览: 87
课堂笔记_c++应用1
这是 WorkThread 类的一个静态成员函数 instance() 的实现。该函数用于获取 WorkThread 类的唯一实例,如果实例尚未创建,则会创建一个新的实例并返回。这个函数使用了双重检查锁定模式来保证线程安全。
在函数内部,首先定义了一个名为 s_mutex 的静态局部变量,用于确保只有一个线程可以进入临界区。接着使用 QMutexLocker 类创建一个锁对象 lock,这样可以确保锁在函数返回时自动释放。
接下来,检查静态成员变量 m_instance 是否为 nullptr,如果是,则创建一个新的 WorkThread 对象并将其赋值给 m_instance。由于创建对象是一个耗时的操作,因此在加锁之前进行一次判断可以减少加锁的次数,提高程序的执行效率。
最后,返回静态成员变量 m_instance 的指针。由于 m_instance 是静态变量,因此可以在类的所有对象之间共享,并且在程序生命周期内只会创建一个实例。
阅读全文