for (int i = 0; gc_handDataOutput->QueryNumberOfHands(); ++i)
来源:互联网 发布:软件小品官网 编辑:程序博客网 时间:2024/06/05 08:05
逗比的坑——for (int i = 0; gc_handDataOutput->QueryNumberOfHands(); ++i)
情景描述
使用C++ 开发Intel RealSense应用,逻辑写完之后,添加界面,使用Qt开发界面。
我的应用里面使用了生产者消费者模型,协作两个线程,一个线程获取3D摄像头的数据,一个线程通过socket将数据发送送出去。
发现Qt有自己的线程类QThread,用于同步的信号量类QSemaphore,抛弃了之前使用Win32 API的实现,以面向对象的方式重写了一遍,测试时候发现,刚启动时候一切运行正常,一伸手界面就冻住了
原因猜测
- 生产者消费者模型写错,造成死锁: 加断点调试,反复检查,发现没问题
- QT的QThread类,QSemaphore类写得有问题,不适合Intel
的SDK,因为Intel的SDK用了并行之类的优化,每次调试的输出信息都显示20多个线程退出:重新用Win32的API还是同样的问题,一伸手就死掉 - socket传输部分写错了,阻塞:加断点调试,并没有错。。。
最后解决
实在没办法,代码只有几百行,于是就和之前正常的一行行的比对,竟然还是没发现!!!
然后一段一段的替换,用能跑的替换不能跑的,最终定位到了问题
循环的条件那儿,只要是>0的数,都尼玛直接死循环了
3 0
- for (int i = 0; gc_handDataOutput->QueryNumberOfHands(); ++i)
- for(int i = 0;i < 10;i++)和int i;for(i = 0;i < 10;i++)
- for (int i=0;i<GetMenuItemCount(hMenu1);i++)
- for(int i = 0; i < 10; i++) 与 for(int i = 0; i < 10; ++i) 的区别
- for(int i=0;i<list.size();i++) 与 for(int i=0,len=list.size();i<len;i++)的区别
- for(Object o :list)与for(int i = 0 ,int size = list.size();i<size;i++)ConcurrentModificationException
- for (int i = 0, size = c.size(); i < size; i++)
- (二)关于for(int i = 0;i<a.length();i++){...}
- 用c:forEach实现for(int i=0 ; i < 10 ; i++)
- for(int i=0;i<stack.size();i++)出栈不完全问题
- (int a[][]) //输出数组方法 { for(int i=0;i<a.length;i++) { for(int j=0;j<a[0].length;j++)
- for( i=0; i<5; a[i] = i++);
- for(int i=0;;)中i的作用域
- for(int i=0;;)中i的作用域
- for(int i = 0; i < 10; i++)和ctrl z在VC++6.0和VS2005中的不同表现
- foreach(int i in a);for(int i : a);
- swift 如何使用 for(i=0;i<n;i++)
- for(let i = 0; i < 10; i++)和for(var i = 0; i < 10; i++)的思考
- 滤波
- 每个程序员1小时内必须解决的5个编程问题
- HDU - 4712 Hamming Distance(坑爹的随机数算法 + 暴力求解)
- Linux 内核学习之内存寻址(一) 硬件寻址
- Unreal Engine 4 Terminology
- for (int i = 0; gc_handDataOutput->QueryNumberOfHands(); ++i)
- 登录出错不过3,结合springsec
- java使用Xstream注解 解析xml文件 并将数据导入MySql数据库中
- 大数相乘之求N!
- Spring如何实现自动依赖注入-------autowire
- .net/c#得到EXCEL表格中的有效行数和列数
- 打印一组数字中最大数及出现的次数
- LayoutInflater.inflate(resid, parent, false)
- 在家你懂的貌晾够讼澈戳颐蘸蔚磁于