什么是工作线程?

时间:2011-02-17 10:57:05

标签: multithreading thread-safety pthreads threadpool

这是什么工作线程?如何实施?何时使用它们。我问这个是因为很多人提到它们但是我没有找到它们的一些例子。或者只是创建线程的说法?感谢。

2 个答案:

答案 0 :(得分:0)

“工作线程”是一个线程的通用术语,它执行某些独立于某些主线程的任务。根据用途,它可能只是指主要UI线程以外的任何线程,或者它可能意味着执行范围良好的任务的线程(即“作业”而不是持续应用程序生命周期的连续操作)。

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

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

答案 1 :(得分: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);
.
.
.