Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2458|回复: 1
打印 上一主题 下一主题

QSocketNotifier: Socket notifiers cannot be enabled or disabled from another ...

[复制链接]

1228

主题

1997

帖子

7582

积分

认证用户组

Rank: 5Rank: 5

积分
7582
跳转到指定楼层
楼主
发表于 2018-3-11 22:40:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread


主线程中不能调用网络请求,把网络请求放线程中。
回复

使用道具 举报

1228

主题

1997

帖子

7582

积分

认证用户组

Rank: 5Rank: 5

积分
7582
沙发
 楼主| 发表于 2018-3-24 14:03:33 | 只看该作者
跟单例的实现方法也有关系,如下两个,上面会报这个错,下面正常
  1.     static QSharedPointer<QControlSo>& instance()
  2.     {

  3.         if (m_pInstance.isNull())
  4.         {
  5.             QMutexLocker mutexLocker(&m_Mutex);
  6.             if (m_pInstance.isNull())
  7.                 m_pInstance = QSharedPointer<QControlSo>(new QControlSo());
  8.         }
  9.         return m_pInstance;
  10.     }
复制代码
下面的正确
  1. static QControlSo &instance(void)
  2.         {
  3.     #ifdef Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
  4.             if(!QAtomicPointer<QControlSo>::isTestAndSetNative())//运行时进行检测
  5.                 qDebug() << "Error: don's support TestAndSetNative!!!!!!";
  6.     #endif
  7.             //双重检测加锁
  8.             if(m_pInstance.testAndSetOrdered(0,0)){
  9.                 QMutexLocker locker(&m_Mutex);
  10.                 m_pInstance.testAndSetOrdered(0, new QControlSo);
  11.             }
  12.             return * m_pInstance;
  13.         }

  14. private://下与上相同
  15.     QControlSo();
  16.     QControlSo(const QControlSo &);
  17.     QControlSo & operator=(const QControlSo &);
  18.     QReadWriteLock internalMutex;
  19.     static QMutex m_Mutex;
  20.     static QAtomicPointer<QControlSo> m_pInstance;

  21. QMutex QControlSo::m_Mutex;
  22. QAtomicPointer<QControlSo> QControlSo::m_pInstance;
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-5-4 14:05 , Processed in 0.055844 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表