簡體   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