c# - 在 C# 中指定用于任务的线程
问题描述
我有一个应用程序,其中有一个传入数据流。当每个数据包到达时,我想在特定线程上处理它以避免同步问题。如何创建一个线程来运行特定操作,然后使用每个传入数据包的给定参数启动它?有没有更好的方法来解决这个问题?即我目前有这个:
Task.Run(()=>MainWindow.ChartData(dat[0], vd.airspeed, vd.yaw));
但不是每次都启动一个新线程,而是希望每次调用都发生在同一个线程上。
解决方案
创建一个创建单个线程并将工作传递给该线程的类。其他班级可以将工作推到这个班级。
这就是所谓的调度员。调度器可以封装一个队列,让一个线程休眠一段时间,获取队列的锁,检查队列中的项目,从队列中获取一些项目,释放队列的锁,处理一些项目,然后回去睡一会儿。
调度程序将有一个方法来获取队列的锁,添加一个工作项并释放队列的锁。此方法将被其他线程调用以发布工作。
推荐阅读
- restful-authentication - act_like_restful_authentication 与 authlogic v5
- regex - 如何使用 sed 将单个转义字符替换为双精度字符
- python - 如何制作像甜甜圈图一样的时间
- javascript - ESLint 规则在 Angular 中排除某些关键字和短语?
- php - Php - 超过超时时停止线程
- ruby-on-rails - Rails 的 Puma Systemd 配置不工作
- c# - OpenTK - 如何使用累积缓冲区实现抗锯齿
- testing - 一个简单的java控制台应用程序的黑盒测试?
- flutter - 带标签的 Flutter 表单导航——如何在切换表单字段时避免不需要的空格
- javascript - Javascript对象/数组循环和创建表问题