逗比的坑——for (int i = 0; gc_handDataOutput->QueryNumberOfHands(); ++i)
2015-08-19 17:00
274 查看
情景描述
原因猜测
最后解决
我的应用里面使用了生产者消费者模型,协作两个线程,一个线程获取3D摄像头的数据,一个线程通过socket将数据发送送出去。
发现Qt有自己的线程类QThread,用于同步的信号量类QSemaphore,抛弃了之前使用Win32 API的实现,以面向对象的方式重写了一遍,测试时候发现,刚启动时候一切运行正常,一伸手界面就冻住了
QT的QThread类,QSemaphore类写得有问题,不适合Intel
的SDK,因为Intel的SDK用了并行之类的优化,每次调试的输出信息都显示20多个线程退出:重新用Win32的API还是同样的问题,一伸手就死掉
socket传输部分写错了,阻塞:加断点调试,并没有错。。。
然后一段一段的替换,用能跑的替换不能跑的,最终定位到了问题
循环的条件那儿,只要是>0的数,都尼玛直接死循环了
原因猜测
最后解决
情景描述
使用C++ 开发Intel RealSense应用,逻辑写完之后,添加界面,使用Qt开发界面。我的应用里面使用了生产者消费者模型,协作两个线程,一个线程获取3D摄像头的数据,一个线程通过socket将数据发送送出去。
发现Qt有自己的线程类QThread,用于同步的信号量类QSemaphore,抛弃了之前使用Win32 API的实现,以面向对象的方式重写了一遍,测试时候发现,刚启动时候一切运行正常,一伸手界面就冻住了
原因猜测
生产者消费者模型写错,造成死锁: 加断点调试,反复检查,发现没问题QT的QThread类,QSemaphore类写得有问题,不适合Intel
的SDK,因为Intel的SDK用了并行之类的优化,每次调试的输出信息都显示20多个线程退出:重新用Win32的API还是同样的问题,一伸手就死掉
socket传输部分写错了,阻塞:加断点调试,并没有错。。。
最后解决
实在没办法,代码只有几百行,于是就和之前正常的一行行的比对,竟然还是没发现!!!然后一段一段的替换,用能跑的替换不能跑的,最终定位到了问题
循环的条件那儿,只要是>0的数,都尼玛直接死循环了
相关文章推荐
- Duilib界面库Capture系列的相关bug解决
- UE3 材质函数
- UE4 Material Functions Overview
- hdoj1242(bfs+priority_queue)
- 多校第九场Arithmetic Sequence题解
- 几个基础数位DP (hdu 2089,hdu 3555 ,uestc 1307 windy 数)
- CodeForces 441 A. Valera and Antique Items
- AC自动机+DP 改变字符串中的‘?’使得在字典中匹配到的次数最多 codechef Lucy and Question Marks
- IOS第11天(3:UIPickerView省市联动)
- Longest Ordered Subsequence(POJ--2533
- iOS基础-UIKit框架-多控制器管理-Modal
- UE4 Post Process Effects on Mobile Platforms
- Test Design Techniques - STATE BASED TESTING
- 安卓UI布局常见警告
- UUID的组成
- iOS开发学习之UIWindow
- UE4 Performance Guidelines for Mobile Devices
- java并发容器(Map、List、BlockingQueue)详解
- poj 1986——Distance Queries
- Web交互设计优化的简易check list