在.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?
请注意,我不是在寻找有关如何在不使用线程的情况下完成此操作的建议,我确实需要直接使用线程,线程池和任务系统都不适合我的用例(不愿意在此讨论) 。我只是不确定如何干净地回收线程并将其映射到另一个函数以进行新的运行
答案 0 :(得分:5)
您只需编写一个执行一个工作单元的方法,然后在完成后再执行另一个工作单元。就Thread
而言,它只是运行它的一个代表,就像它一直一样。委托运行碰巧做了两个(或更多,因为它可以继续寻找工作)在程序中逻辑上单独的操作是它不知道(或关心)的事情。
一个常见的情况,或多或少是线程池的作用,是有一个“要做的事情”的队列和只有一个循环的线程,在循环的主体中,拉出一个项目排队并处理它。 (只需确保在此处正确同步线程之间共享的数据。)