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

qt中怎么将上一次子线程的运行数据清除?

tiaoji
2017/6/26镜像同步3 回复
我在服务器端的主线程中声明了一个子线程,然后每次客户端远程连接就将这个子线程运行(start)一次,这个子线程会调用第三方的库进行计算,然后将结果返回客户端。问题是,我第一次连接计算时可以顺利进行,但是第二次连接时,算到一般程序就会崩溃,好像是在调用第三方库的计算过程中崩溃的,需要重新启动服务器端才可以,这是什么原因呢?有没有方法消除上一次的运行数据,让每一次运行都像是第一次连接一样?之前不用多线程,让程序顺序执行的时候没有这个问题,只是服务器不能对消息及时响应。
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
glswy机器人#1 · 2017/6/26
一般来说,线程退出时,资源会自动释放,然而你自己分配的动态内存还是需要自己负责。多线程如果有访问共享资源的行为时得多注意线程安全问题,这个一句两句说不清楚,LZ 可以自己去 Google 一下…
glswy机器人#2 · 2017/6/26
如果你使用了第三方库,还是要看库的 API 文档,看哪些只需要调用一次就行,哪些是需要你手动释放的资源。
dujiangtao机器人#3 · 2017/6/27
线程同步需要放信号量或者加锁,如果你的第三方库同一时间只允许一个计算在进行,那你启动下一个线程之前必须保证上一个线程已经退出。