c# - lock 和 Thread.Interrupt 哪个更快?

标签 c# multithreading networking

我有一个程序,涉及在一个线程上从网络接收数据包,然后通知其他线程已收到该数据包。我当前的方法使用Thread.Interrupt,在传输大量数据时似乎有点慢。使用“锁”来避免使用许多中断是否会更快,或者锁实际上只是在其实现中调用 Interrupt() ?

最佳答案

我不明白为什么您要使用Thread.Interrupt而不是一些更传统的信号方法来通知等待线程已收到数据。 Thread.Interrupt 无论如何都要求目标线程处于等待状态,那么为什么不添加一个可以向目标线程的等待逻辑发出信号的对象,并使用它来启动新数据呢?

lock 用于保护关键代码或数据不被其他线程执行,并且不适合作为线程间事件信号发送的机制。

在合适的对象上使用 WaitOneWaitAll 而不是其中之一。 .Net 4 中的 System.Collections.Concurrent 还提供了将新数据排队到目标线程的 pol 中的出色方法,以及解决问题的其他可能方法。

关于c# - lock 和 Thread.Interrupt 哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6294268/

相关文章:

c# - 如何使 SandcaSTLe 包括继承的属性

c# - 动态增长的文本字段

java - 如何将重复调用的外部进程集成到Java webapp中?

java - Executor 创建的线程池会释放内存吗?

linux - 无法从同一局域网中的另一台主机 ping docker 容器

docker - Kubernetes (gke) 获取 pod 网络接口(interface)的名称

c# - XSL-FO SVG 格式支持 - .Net

c# - Fck编辑上传图片

C#为所有对象订阅相同的事件处理程序是否线程安全

java - 在 Java 中重用 ObjectOutputStreams