【问题标题】:Specify thread to use for task in c#在 C# 中指定用于任务的线程
【发布时间】:2020-01-22 15:17:50
【问题描述】:

我有一个应用程序,其中有一个传入数据流。 当每个数据包到达时,我想在特定线程上处理它以避免同步问题。如何创建一个线程来运行特定操作,然后为每个传入的数据包使用给定的参数启动它?有没有更好的方法来解决这个问题? 即我目前有这个:

        Task.Run(()=>MainWindow.ChartData(dat[0], vd.airspeed, vd.yaw));

但我希望每次调用都发生在同一个线程上,而不是每次都启动一个新线程。

【问题讨论】:

标签: c# multithreading task


【解决方案1】:

创建一个创建单个线程并将工作传递给该线程的类。其他班级可以将工作推给这个班级。

这就是所谓的调度程序。调度器可以封装一个队列,让一个线程休眠一段时间,获取队列的锁,检查队列中的项目,从队列中获取一些项目,释放队列的锁,处理一些项目,然后回去睡一会儿。

调度程序将有一个方法来获取队列的锁,添加一个工作项并释放队列的锁。这个方法会被其他线程调用来发布工作。

【讨论】:

    猜你喜欢
    • 2020-10-28
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    相关资源
    最近更新 更多