Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#多线程概念问题_C#_.net_Multithreading_Thread Safety - Fatal编程技术网

C#多线程概念问题

C#多线程概念问题,c#,.net,multithreading,thread-safety,C#,.net,Multithreading,Thread Safety,有人知道我将如何完成下面的任务吗?我一直在玩C#中的线程池,我觉得这不适合它 启动应用程序 检查是否有新客户机>客户机有需要完成某些工作的项目 在执行任务之前解析客户端请求。现在应该排队等待检查 每(时间间隔示例:30秒)>执行任务检查一次每个客户端 同时,我必须重复步骤2-3,因为我希望: 新客户 修改客户端 没有变化 重要的是要注意,将会有很多客户机,但是他们的任务应该执行得相当快,但是,我不想从一个客户机任务创建一个死锁,这需要花费更长的时间来处理 提前谢谢 不要像您那样使用“拉”模型,

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

  • 启动应用程序

  • 检查是否有新客户机>客户机有需要完成某些工作的项目

  • 在执行任务之前解析客户端请求。现在应该排队等待检查

  • 每(时间间隔示例:30秒)>执行任务检查一次每个客户端

  • 同时,我必须重复步骤2-3,因为我希望:

  • 新客户
  • 修改客户端
  • 没有变化
  • 重要的是要注意,将会有很多客户机,但是他们的任务应该执行得相当快,但是,我不想从一个客户机任务创建一个死锁,这需要花费更长的时间来处理

    提前谢谢

    不要像您那样使用“拉”模型,是否可以使用“推”模型?也就是说,使用事件而不是每x秒检查一次客户端状态

    如果你不能做到这一点,你可以使用线程池或者windows服务


    Riana

    我同意,从长远来看,客户端发起操作的推送模式会更好地工作,这样服务器只需要在实际有事情要做时工作,而不是连续轮询所有客户端

    客户机可以将请求插入到队列中,服务器处理这些请求。这样,您就可以控制服务器可以并行处理多少请求,而不会干扰teachother

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


    GJ

    谢谢,我会记住这一点。我如何解决这个问题,必须重复步骤2-3,并在每个圣诞节继续处理客户端任务。我认为BlockCollection是个好主意,我昨晚看到了这个。我不会轮询客户机,而是客户机将工作放入队列。然后服务器完成工作并通过回调将结果发送回。你用什么进行通信,WCF?我现在只是在.net 4.0中使用命令提示符,但它最终将作为服务运行。不,我的意思是客户端如何与服务器通信?因为他们,;如果处于不同的进程中,他们需要某种方式与服务器通信,那么您使用什么方式呢?(Sockets、WCF、MPI等?)这决定了当请求的结果完成时,如何让服务器回调到cleint。否则客户端应该轮询服务器或其他东西。我正在使用PDH.dll处理对性能数据的调用,因此这就是我与客户端通信的方式。我同意我不喜欢依赖EventResetArg。