SocketNotifier: Socket notifiers cannot be enabled or disabled from another thread

文章探讨了主线程创建socket并在子线程中调用引发的错误。解决方法包括在线程内实例化socket和使用信号槽机制进行线程间通信,避免线程同步混乱。原因在于不同线程需独立执行,防止资源冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题产生原因,系统创建了一个socket在主线程,自己单独开了一个线程,我在单独开的线程里调用这个socket,报错。

解决办法1:直接在线程里实例化这个socket而不是调用其他线程的socket。

解决办法2:利用connect建立信号与槽通知另一个线程处理。线程A肯定是不能直接调用线程B的函数的,但是可以通过emit 发送,线程B通过槽函数收到然后帮A调用这个函数。

原因分析:当一个线程正常执行时,代码逻辑顺序固定,突然另一个线程告诉你需要处理某种操作,这个线程会瞬间错乱崩溃,并且,原线程可能正在访控制资源。所以不同线程之间都是独立按顺序运行代码。如果希望线程间通信那还需要类似于管道、消息队列一类的方式进行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AIScholar_lrm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值