首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#多线程概念问题

C#多线程概念问题
EN

Stack Overflow用户
提问于 2011-03-26 04:22:41
回答 2查看 696关注 0票数 1

有人知道我将如何完成以下任务吗?我一直在使用C#中的线程池,我觉得这不太适合它。

  1. 启动应用
  2. 检查新客户端>客户端有一些项目,他们希望完成一些工作。
  3. 在执行任务之前解析客户端请求。现在应该排队检查。
  4. 每隔一次检查每个客户端(时间间隔:30秒)>执行任务。
  5. 同时,我必须重复步骤2-3,因为我希望:
代码语言:javascript
复制
1. New Clients
2. Modified Clients.
3. No Change.

需要注意的是,将会有很多客户端,但是它们的任务应该执行得相当快,但是,我不想从一个客户端任务中创建一个死锁,需要更长的时间来处理。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2011-03-29 07:19:56

不是像你那样使用“拉”模型,而是不可能使用“推送”模型吗?也就是说,使用事件而不是每x秒检查客户端状态。

如果不能这样做,可以使用线程池或窗口服务。

里亚娜

票数 0
EN

Stack Overflow用户

发布于 2011-03-29 07:35:26

我同意客户端启动操作的推送模型在长期运行时会更好地工作,这样服务器只能在实际有事情可做时才能工作,而不是不断地轮询所有客户端。

客户端可以将请求插入队列并由服务器处理它们。这样,您就可以控制服务器可以并行处理多少请求,而不需要它们相互干扰。

BlockingCollection是专门为这类工作而设计的.Net 4中引入的一个新类。是一篇关于如何使用它的非常好的文章。如果您是.Net并行编码新手,您可能想要阅读整个系列,非常好的阅读。

GJ

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5440379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档