C# 多线程设计
我设计多线程应用程序的经验有限,希望能就以下简单问题提供一些一般性建议: 应用程序与一组网络设备通信。它必须定期按需在每个设备上执行维护任务。以前,它是通过依次调用每个设备上的方法来实现的。但是,这现在花费的时间太长,因此必须对其进行修改,以便在每个设备上异步调用该方法 我最初的想法是,它需要异步调用每个设备的方法,让回调函数设置一个表示方法已完成的变量,同时循环遍历这些变量,直到它们都表示其对应的方法已完成,这样整个过程可以作为完成返回C# 多线程设计,c#,multithreading,C#,Multithreading,我设计多线程应用程序的经验有限,希望能就以下简单问题提供一些一般性建议: 应用程序与一组网络设备通信。它必须定期按需在每个设备上执行维护任务。以前,它是通过依次调用每个设备上的方法来实现的。但是,这现在花费的时间太长,因此必须对其进行修改,以便在每个设备上异步调用该方法 我最初的想法是,它需要异步调用每个设备的方法,让回调函数设置一个表示方法已完成的变量,同时循环遍历这些变量,直到它们都表示其对应的方法已完成,这样整个过程可以作为完成返回 仅供参考,我正在用C语言编程。我拥有高级知识,但对Thr
仅供参考,我正在用C语言编程。我拥有高级知识,但对ThreadStart、ThreadPool等方面的经验很少。如果您使用的是.NET 4.0,您可能需要查看以下内容:
如果您使用的是.NET 4.0,您可能需要查看以下内容:
从这里开始-查看从这里开始-查看您可以使用作业计数、作业锁定和关闭标志。要关闭:
您可以使用作业计数、作业锁定和关闭标志。要关闭:
如果不深入研究线程如何影响代码,以及在单处理器与多处理器机器上,代码在引擎盖下的行为,您可以选择以下几种方式: 1) 经典的Thread类,它接受委托来执行其职责。对于不一定需要状态更新的冗长任务,首选此选项 2) 您可以使用,它公开状态事件。他们使用.NET线程池 3) 您可以使用调用自己的委托,它将在.NET线程池线程上运行其任务,并允许您指定在任务完成时运行的回调 4) 您可以使用new&nice,以非常优雅的方式为您提供所需的一切
请记住,如果希望“并行”执行的任务共享任何状态,则必须使用lock语句序列化对该状态的访问(根据需要,还存在其他方法)。当心死锁 如果不深入研究线程如何影响代码,以及在单处理器与多处理器机器上,代码在引擎盖下的行为,您可以选择以下几种方式: 1) 经典的Thread类,它接受委托来执行其职责。对于不一定需要状态更新的冗长任务,首选此选项 2) 您可以使用,它公开状态事件。他们使用.NET线程池 3) 您可以使用调用自己的委托,它将在.NET线程池线程上运行其任务,并允许您指定在任务完成时运行的回调 4) 您可以使用new&nice,以非常优雅的方式为您提供所需的一切
请记住,如果希望“并行”执行的任务共享任何状态,则必须使用lock语句序列化对该状态的访问(根据需要,还存在其他方法)。当心死锁 您使用的是什么版本的.Net?您是真的在寻找异步行为,还是希望所有设备同时运行,即并行\并发地使用.Net 3.5。问题在于速度,一次操作一台设备需要的时间太长。这些设备不必在完全相同的时间运行——不确定异步/并行/并发哪个术语在这里适用得最好。感谢您使用的.Net版本是什么?您真的在寻找异步行为,还是希望使用.Net 3.5同时操作所有设备,即并行\并发。问题在于速度,一次操作一台设备需要的时间太长。这些设备不必在完全相同的时间运行——不确定异步/并行/并发哪个术语在这里适用得最好。谢谢