回复: 程序运行一段时间,就异常崩溃
#11 [yuyu414 08-20 16:40]
如果是代码问题的话就自己慢慢调吧,总能解决。
如果是嵌入式还有个可能就是要设置一些cpu的编译参数,看具体型号版本,不然是会莫名其妙的崩溃的。
#12 回 介农酥 的帖子 [fsu0413 08-23 08:26]
介农酥:非常感谢,这里面没有那个线程要等那个,都是独立的,共享的就是一些静态变量吧。其他的每个对象的成员应该都是自己的吧
哦,对了,这些数据都要发给主界面,通过信号和槽的方式,主线程只有一个实例,这算不算共享的存储区
(2019-08-20 12:33)
看了一眼你的补充问题。
http有4个实例没问题。QNetworkAccessManager本身就是异步的不用开线程,直接在主线程的消息循环里做就行,这样就没有线程间共有资源竞争的问题了,4个PLC都放在主线程就完事
而且就算用TCP,也可以用异步的信号和信号槽。总之你这个问题,如果数据量不大的话不建议开线程
#13 回 fsu0413 的帖子 [介农酥 08-26 16:45]
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方能真正同步。