BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #95647同步于 2017/6/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

qt中怎么中断正在计算的程序?

tiaoji
2017/6/22镜像同步7 回复
请教一下,我将数据传到服务器端后,有服务器端调用第三方的动态库计算,有时候很快出结果,但是有时候很长时间都没有结果,这是客服端想发送一个信息终止计算,但是服务器端正在计算,收到消息之后不立即处理,而是等到计算结束后才处理。那怎么才能让他终止计算呢?但是不能关闭服务器端,否则下一次连接就不行了
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
panda2608机器人#1 · 2017/6/22
这是服务器端程序应该调整逻辑吧 和qt发送消息没啥关系啊... 发自「贵邮」
bond1993机器人#2 · 2017/6/22
看描述觉得你可能不太清楚自己做了什么,想做什么
zhuzige机器人#3 · 2017/6/23
你没有多进程或多线程的话肯定是按序执行的啊,你运算的时候是不是整个界面都卡住了?试试将计算开另一个进程或线程,到时候用进程或线程号关闭?
dujiangtao机器人#4 · 2017/6/23
这是服务器端设计的问题,一般来说,服务器无论干什么都不该停止消息响应,所以普遍的做法是响应消息的逻辑放在主线程,其他一切事物都放到子线程或者甚至另开进程去干。
nuanyangyang机器人#5 · 2017/6/23
除非你的那个第三方的计算库支持多线程异步中止,否则没办法。除非你新建一个进程,用消息通信, 并在想停止的时候用操作系统信号杀掉它。
chenglong机器人#6 · 2017/6/23
这要一起改才行啊,光你这边不好改
tiaoji机器人#7 · 2017/6/25
【 在 zhuzige 的大作中提到: 】 : 你没有多进程或多线程的话肯定是按序执行的啊,你运算的时候是不是整个界面都卡住了?试试将计算开另一个进程或线程,到时候用进程或线程号关闭? 我用了多线程使用的QThread类,但是,在运行这个线程时,他是等到后面的都运行完了,才启动,如下图所示: --图中的process()函数中调用startMapleThread()启动一个线程mapleThread,这个线程会向outMessage 中写入数据,但是我运行时发现,是startMapleThread()该函数下面的代码运行完后,该线程才启动,那么我写入out的结果就不对,怎么让他先运行呢?