【发布时间】:2013-12-20 23:27:30
【问题描述】:
假设我有 10 个线程忙于做某事,它们有时会调用一个方法
public HandleWidgets(Widget w) { HeavyLifting(w) }
但是,我不希望我的 10 个线程在 HeavyLifting(w) 上等待,而是将 HeavyLifting(w) 工作分派给第 11 个线程,即 HeavyLifter 线程并异步继续。调度到的 HeavyLifter 线程应该始终是同一个线程,并且我不想创建多个线程(因此,我不能这样做:C# Asynchronous call without EndInvoke?)。
HeavyLifting(w) 是“一劳永逸”,因为调用 HandleWidgets() 的线程不需要回调或类似的东西。
什么是健康的做法?
【问题讨论】:
-
你的线程设置很奇怪。与其将“繁重的工作”分配给多个线程,不如将其分配给多个线程,然后让单个线程陷入实际工作中。这与您在尝试从多个内核中获取收益时通常想要的相反。
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
嗨,Dlev,这很不寻常。我的实际应用是十个线程与外部硬件接口,第十一个线程正在解决与从硬件整理的数据有关的问题。我不应该说更多;)
标签: c# .net multithreading