【问题标题】:What are working threads?什么是工作线程?
【发布时间】:2011-06-29 00:28:30
【问题描述】:

这是什么工作线程?如何实施它们?以及何时使用它们。我问这个是因为很多人都提到了它们,但我在网上找不到它们的一些例子。还是只是创建线程的说法?谢谢。

【问题讨论】:

  • 也许他们在谈论工作线程,即在后台执行任务的线程。
  • 你能举个例子来说明人们是如何提及他们的,或者请提供一个链接。
  • 你有没有努力看看这些答案?
  • working threads 子句太常见了,连 JavaScript 都有 whatwg.org/specs/web-workers/current-work/…

标签: multithreading thread-safety pthreads threadpool


【解决方案1】:

工作线程本身在线程世界中并不是一个有意义的术语。
我猜你的意思是说,“What are worker threads”?

在这种情况下,让我告诉您worker thread 通常用于处理用户不必等待以继续使用您的应用程序的后台任务。
例如重新计算和后台打印。

为了实现工作线程,应该定义定义线程的控制函数。当进入这个函数时,线程启动,当它退出时,线程终止。这个函数应该有以下原型:More Information

UINT MyControllingFunction( LPVOID pParam );  

一个简短的sn-p,实现工作线程的控制功能,

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);
.
.
.

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-24
      • 2012-01-09
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      相关资源
      最近更新 更多