2011-02-17 153 views
0

這是什麼工作線程?如何實施它們?何時使用它們。我問這是因爲很多人提到他們,但我沒有找到他們的網絡的一些例子。或者只是創建線程的一種說法?謝謝。什麼是工作線程?

+2

也許他們都在談論工作線程,這是在後臺執行任務的線程。 – sashoalm 2011-02-17 11:02:15

回答

0

工作線程在線程世界本身並不是一個有意義的術語。
我想你的意思是說,「What are worker threads」?

在這種情況下,讓我告訴你一個worker thread通常用於處理後臺任務,用戶不需要等待繼續使用你的應用程序。
例如重新計算和背景打印。

爲了實現工作者線程,應該定義控制函數來定義線程。當輸入這個函數時,線程啓動,當它退出時,線程終止。該函數應具有以下原型:More Information

UINT MyControllingFunction(LPVOID pParam); 

其中一小段實現輔助線程的控制功能,

UINT MyThreadProc(LPVOID pParam) 
{ 
    CMyObject* pObject = (CMyObject*)pParam; 

    if (pObject == NULL || 
     !pObject->IsKindOf(RUNTIME_CLASS(CMyObject))) 
    return 1; // if pObject is not valid 

    // do something with 'pObject' 

    return 0; // thread completed successfully 
} 

// inside a different function in the program 
. 
. 
. 
pNewObject = new CMyObject; 
AfxBeginThread(MyThreadProc, pNewObject); 
. 
. 
. 
0

「工作線程」是執行與某個主線程無關的某個任務的線程的通用術語。根據使用情況,它可能僅僅意味着主UI線程以外的任何線程,或者它可能意味着一個執行良好作用域任務的線程(即「作業」而不是持續應用程序生命週期的連續操作)。

例如,您可能會生成一個工作線程以通過網絡從遠程計算機檢索文件。它可能會發送進度更新應用程序的主線程。

我使用一個工作者或後臺線程,任何時候我想執行一個冗長的任務而不佔用我的用戶界面。線程經常允許我通過連續的一系列語句來簡化我的代碼,而不是一個複雜的非阻塞體系結構。