C# thread问题

问题描述

大家好,我打算在特定的时候开一个线程来接收底端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

C# thread问题的相关文章

android-如何处理 network on main thread exception 异常?

问题描述 如何处理 network on main thread exception 异常? 程序中设置了下面的两个类 class CallNetworkMethod extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { if (TwitterUtils.isAuthenticated(prefs)) { sendTweet(); } else { Inte

Inter Thread Latency

原文地址:http://mechanical-sympathy.blogspot.com/2011/08/inter-thread-latency.html (移到墙内) Message rates between threads are fundamentally determined by the latency of memory exchange between CPU cores.   The minimum unit of transfer will be a cache line

5天不再惧怕多线程——第一天 尝试Thread

     原本准备在mongodb之后写一个lucene.net系列,不过这几天用到多线程时才发现自己对多线程的了解少之又少,仅仅停留在lock上面, 故这几天看了下线程参考手册结合自己的心得整理一下放在博客上作为自己的学习笔记.      好了,我们知道"负载"是一个很时尚,很牛X的玩意,往大处说,网站需要负载,数据库需要负载.往小处说,线程也需要负载,面对海量的 用户请求,我们的单线程肯定扛不住,那么怎么办,一定要负载,所以说多线程是我们码农必须要熟练掌握的一门技术.     在f

[转载]Thread.Sleep(0)妙用

原文地址http://blog.csdn.net/lgstudyvc/article/details/9337063 来自本论坛   我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间.那么你有没有正确的理解这个函数的用法呢思考下面这两个问题 假设现在是 2008-4-7 12:00:00.000如果我调用一下 Thread.Sleep(1000) 在 2008-4-7 12:00:01.000 的时候这个线程会 不会被唤醒 某人的代码中用了一句看似莫明其妙的话Thread.

多线程Runnable和Thread产生线程

  http://dev.yesky.com/186/2547686.shtml public class Test { public static void main(String[] args) throws Exception{ MyThread mt = new MyThread(); mt.start(); mt.join(); Thread.sleep(3000); mt.start(); } } 当线程对象mt运行完成后,我们让主线程休息一下,然后我们再次在这个线程对象上启动线程.

Java Thread Programming 1.8.2 - Inter-thread Communication

  Missed Notification A missed notification occurs when threadB tries to notify threadA, but threadA is not yet waiting for the notification. In a multithreaded environment like Java, you don't have much control over which thread runs and for how lon

Java Thread Programming 1.8.3 - Inter-thread Communication

CubbyHole Example The class CubbyHole (see Listing 8.9) simulates a cubbyhole. A cubbyhole is a slot that can have only one item in it at a time. One thread puts an item into the slot and another thread takes it out. If a thread tries to put an item

Java Thread Programming 1.8.4 - Inter-thread Communication

Streaming Data Between Threads Using Pipes The java.io package provides many classes for writing and reading data to and from streams. Most of the time, the data is written to or read from a file or network connection. Instead of streaming data to a

Java Thread Programming 1.7 - Concurrent Access to Objects and Variables

access|object When multiple threads are interacting with an object, controls need to be in place to ensure that the threads don't adversely affect one another. This chapter deals with issues that can introduce subtle errors in your application. An ap

Java Thread Programming 1.8.1 - Inter-thread Communication

The Need for Inter-thread Signaling Through synchronization, one thread can safely change values that another thread will read. How does the second thread know that the values have changed? What if the second thread is waiting for the values to chang