问题描述
大家好,我打算在特定的时候开一个线程来接收底端MCU发送来的数据(基于USBHID),这个过程中下面MCU一次发送150个字节上来,需要发送多次,那么我每次读完后该线程就不起作用,那岂不是后面来的包就没有被接收了???我把读数据放在线程中,一次数据读完,该线程就关闭了。
解决方案
解决方案二:
线程不能只接受一次就over啊,线程内部while循环,传递的包要带包头,告诉包长等信息,然后长度不够就一直接收
解决方案三:
这个思路本身就是包含一大堆错误的,如果你学习过比较深入的知识就会知道,计算机中的I/O消息都是通过底层中断而来的。那种动不动就说什么“我要弄个线程去接收消息”的说法,是一些比较垃圾的java程序员最爱说的,因为他们除了这个简单的东西以外就没有学过什么技术,我希望.net程序员不要学这种坑爹的概念。如果你采用“阻塞式”的编程语句去死等消息到来,那顶多应该只是逼不得已,例如你采用的系统消息处理类库比较低级、只是实现了阻塞的接口功能,并且你采用了那种业余编程设计人员的“只会顺序处理,不会异步处理”的编程思路。正常的消息处理概念,是消息来了才占用线程去处理。在消息没有到来时,不占用任何线程,顶多只是占用一个对象去保存等待状态(对象数据)而已。基于正确的、非循环非阻塞的消息处理概念去设计程序,也许一开始觉得有点复杂(相当于从只会四则运算升级到会解一元一次方程了),但是这是必须的设计基本概念。
解决方案四:
引用
那种动不动就说什么“我要弄个线程去接收消息”的说法,是一些比较垃圾的java程序员最爱说的,因为他们除了这个简单的东西以外就没有学过什么技术,我希望.net程序员不要学这种坑爹的概念。
这句666
解决方案五:
ls大神能更详细点么?有资料可以推荐么
解决方案六:
引用2楼sp1234的回复:
这个思路本身就是包含一大堆错误的,如果你学习过比较深入的知识就会知道,计算机中的I/O消息都是通过底层中断而来的。那种动不动就说什么“我要弄个线程去接收消息”的说法,是一些比较垃圾的java程序员最爱说的,因为他们除了这个简单的东西以外就没有学过什么技术,我希望.net程序员不要学这种坑爹的概念。如果你采用“阻塞式”的编程语句去死等消息到来,那顶多应该只是逼不得已,例如你采用的系统消息处理类库比较低级、只是实现了阻塞的接口功能,并且你采用了那种业余编程设计人员的“只会顺序处理,不会异步处理”的编程思路。正常的消息处理概念,是消息来了才占用线程去处理。在消息没有到来时,不占用任何线程,顶多只是占用一个对象去保存等待状态(对象数据)而已。基于正确的、非循环非阻塞的消息处理概念去设计程序,也许一开始觉得有点复杂(相当于从只会四则运算升级到会解一元一次方程了),但是这是必须的设计基本概念。
大侠,能短信留个qq不,我想请你看下我的多线程代码,不知道为什么老是卡顿,效率不高,找了半天没找到原因
时间: 2024-12-25 09:55:42