首页| 论坛| 消息
主题:程序运行一段时间,就异常崩溃
回帖:fsu0413:
看了一眼你的补充问题。
http有4个实例没问题。QNetworkAccessManager本身就是异步的不用开线程,直接在主线程的消息循环里做就行,这样就没有线程间共有资源竞争的问题了,4个PLC都放在主线程就完事
而且就算用TCP,也可以用异步的信号和信号槽。总之你这个问题,如果数据量不大的话不建议开线程
http如果都放在一个线程里的话,同时接受4个摄像头的数据,就会处理不过来,大概是这种情况:不去执行响应的函数或者读取的字符串为空。只有分开才能够好处理。但是你说把它们放到主线程这应该影响不大,因为总体上平均时间还是够的,只是因为4个摄像头发数据的时间是随机的,可能瞬间很大,比如4个同时发,其实你说的异步我也不是很理解,我读取http的响应都是同一个函数,即使异步,只是说http去向http服务器请求数据是异步的,独立的,但是http返回响应的时候总的一个个来吧,总不能4个同时执行一个函数吧。

顺便问下:最开始我还担心数据不同步的问题(http只有一个线程),大致如下:当摄像头1发数据A1和B1给http的时候,http去执行响应的时候,大约50ms左右,这期间摄像头2发数据A2和B2给http的时候,是不是可以把原来的A1和B1给取代?这是否会造成数据不同步(其实我发现同步的问题到没出现)。
如果将http加上QEventLoop,做成的同步的,http所在线程应该还是可以响应其Socket线程(摄像头)的信号吧,这应该仍不能解决同步的问题吧?
所以我突然想,需要再加个锁,QMutexLocker方能真正同步。
‹上一楼:介农酥:非常感谢,这里面没有那个线程要等那个,都是独立的,共享的就是一些静态变量吧。其他的 ..

查看全部回帖(13)
«返回主帖