繁体   English   中英

重用线程以执行不同的操作

[英]Reuse thread for different action

在.net中重用线程的正确方法是什么? 我知道线程池是这样做的,但是我不确定如何做。 我已经拥有服务器代码,其中有很多(100+)个线程都可以正常工作,但是目前,我有一个新的场景,我需要重用线程而不是执行相同的操作,而要重用不同的线程。

如果我有2种方法,如何重用映射到方法1的线程并将其映射到运行方法2?

伪代码:

 var thread = new Thread(method1);
 do work with thread here
 done, now how do i reuse the thread but tell it which method to run without creating a new one?

请注意,我并不是在寻找有关不使用线程就如何完成此操作的建议,我确实需要直接使用线程,线程池和任务系统都根本不适合我的用例(不愿在这里讨论)。 我只是不确定如何干净地回收线程并将其映射到另一个函数以进行新的运行

您只需编写一个执行一个工作单元的方法,然后在完成时执行另一个工作即可。 Thread而言,它就像过去一样只运行一个委托。 委托运行恰好在程序中执行了两个(或更多,因为它可以继续寻找工作要做)在逻辑上是分开的操作,这是不知道(或不在乎)的。

一种常见的情况(或多或少是线程池的工作方式)是有一个“要做的事情”队列,而线程只有一个循环,该循环在循环体内从队列中拉出一个项并进行处理它。 (只需确保在此处正确同步线程之间共享的数据即可。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM