2011-02-17 79 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线程以外的任何线程,或者它可能意味着一个执行良好作用域任务的线程(即“作业”而不是持续应用程序生命周期的连续操作)。

例如,您可能会生成一个工作线程以通过网络从远程计算机检索文件。它可能会发送进度更新应用程序的主线程。

我使用一个工作者或后台线程,任何时候我想执行一个冗长的任务而不占用我的用户界面。线程经常允许我通过连续的一系列语句来简化我的代码,而不是一个复杂的非阻塞体系结构。