问题标签 [worker-thread]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
107 浏览

android - IntentService 无法使用工作线程任务完成回调

根据开发人员指南,IntentService 启动工作线程并销毁自身。下一个任务由工作线程处理。

工作线程不会通知 IntentService 任务已完成并且正在停止。

一旦服务启动并在主线程上的启动后销毁,您的 onDestroy 代码就会立即调用。

当您没有将工作线程任务完成回调到 IntentService 时,如何解决问题?

0 投票
1 回答
214 浏览

c++ - QThread 中的插槽同时运行

我有两个类,一个 Handler 和一个 Worker 与信号和插槽连接。这是一个简化版本(伪代码):

处理程序构造函数:

工人

所以基本上工作是在从 Handler 发出“doWork”之后开始的。“doWork”槽有一个单次计时器,在一定时间后再次调用相同的函数。一段时间后,处理程序发出一个“stopWork”信号。这是我的调试输出:

所以我不明白的是,我的工作线程怎么可能同时执行两个插槽(doWork 和 stopWork)?不应该在执行“stopWork”插槽之前发布 stopWork 信号并等待线程变为空闲吗?

不幸的是,我无法使用最小的工作示例来重现这一点,但我希望从我发布的代码中可以清楚地看出我缺少什么。

同样根据我的测试,我认为这发生在 30-40% 的时间里。

0 投票
1 回答
430 浏览

delphi - WaitForMultipleObjects 和 64 个线程

根据 Microsoft 的文档MAXIMUM_WAIT_OBJECTS,是64(等待的最大句柄),但由于某种原因,有时(因为随机)WaitForMultipleObjects返回WAIT_FAILED( $FFFFFFFF) 并GetLastError返回ERROR_INVALID_HANDLE( 6)。我究竟做错了什么?

0 投票
1 回答
110 浏览

multithreading - 工作线程挂起/恢复实现

在我尝试向我的 Worker [thread] 类添加挂起/恢复功能时,我遇到了一个我无法解释的问题。(C++1y / VS2015)

该问题看起来像一个死锁,但是一旦附加了调试器并且在某个点之前设置了断点(请参阅#1),我似乎无法重现它 - 所以它看起来像是一个时间问题。

我可以找到的修复(#2)对我来说没有多大意义,因为它需要更长时间地持有互斥锁,并且客户端代码可能会尝试获取其他互斥锁,我理解这实际上增加了僵局。

但它确实解决了这个问题。

工人循环:

暂停/恢复只是:

(Visual Studio)测试:

我错过了什么/做错了什么?为什么作业的 Process()ing 必须由suspend互斥锁保护?

编辑Resume()在通知时不应该一直持有互斥锁;这是固定的 - 问题仍然存在。

0 投票
0 回答
17 浏览

multithreading - 来自工作人员的 UI 线程更新委托 (XAML)

我想从 WorkerThread 更新 GUI 线程中的一些 GUI 元素。GUI (Class MainPage) 指定一个委托函数,如下所示。

}

代表 ptr 在外部声明

并在 MainPage::OnLoaded 方法中加载:

在我的 WorkerThread 中:

当我在大于 10 毫秒的睡眠(X)条件下运行它时,它正在工作,但没有睡眠调用会抛出异常......

有谁知道为什么抛出异常以及什么是错误的或丢失的?

0 投票
0 回答
915 浏览

r - 在插入符号中进行并行处理时,控制台中不会出现详细消息

我曾在 R 中工作过,但出现了一个问题。

我已经使用train()caret 库中的函数编写了一个 R 代码,并且我还通过registDoParallel()doParallel 设置了并行进程。

如果我在没有并行处理的情况下执行,那么我的控制台中会出现详细消息。但是当我应用并行进程时,没有出现详细消息......

这是我的代码。

虽然我设置了allowParallel = TRUE,单核适用于它。(我已经检查了系统监视器)

详细消息出现在控制台中。

在我执行命令registDoParallel(core = 4)之后,所有 4 个内核都可以工作并且没有详细的消息。

这是正常操作吗?

0 投票
0 回答
58 浏览

c# - 让班级代表一个班级互相交谈的更好方法

我真的不确定什么是最好的标题。

在这个例子中,我有以下WorkerThread

此类在我的程序中实例化 X 次,具体取决于我要运行的线程数,并且每个实例在 new Thread() 中运行

现在重要的是它所做的操作很复杂,所以我创建了不同的类,这些类将作为这个 WorkerThread 类的模块,例如:

另一个模块。

在这里需要注意的是,每个模块类都将包含对实例化它的 WorkerThread 的引用,以便它可以与同一线程的其他模块通信。

最后,WorkerModule 必须以某种方式使用这些模块,以便它还可以充当模块之间相互通信的桥梁。

请注意,我如何使ProductFinder使用浏览器,方法是拥有一个带有 getter 的属性,该属性从实例化此类的WorkerThread获取浏览器。

所以问题是是否有更好的方法在 ProductFinder 中获取对浏览器的引用?

0 投票
2 回答
70 浏览

c - 多线程客户端服务器执行有时不会结束

这是我的服务器代码。执行老板工人。我指定线程工作者的数量。问题是有时它不回复我的客户,而且大多停留在接收状态。有时它会执行,但前提是客户端线程最少。客户端线程有时无法连接。任何人都可以指出错误。谢谢。

0 投票
1 回答
9631 浏览

node.js - Node.js 工作线程共享对象/存储

所以,我正在阅读一些关于 Node.js 的东西,当我遇到Worker Threads时我感到很惊讶。

在我看来,拥有线程是一个很好的优势,特别是如果你将它与共享内存访问结合起来。正如您可能已经想到的那样 -> SharedArrayBuffer...

是的,我就是这么想的。所以我首先想到的是给它一个小测试并尝试实现一个简单store的(现在是一个简单的对象),它将在线程之间共享。

SharedArrayBuffer问题是,(除非我在这里遗漏了什么)如何使用

我知道简单Uint32Array是可行的,但是关于对象可以做什么?

起初我想把它转换Uint32Array成你可能会看到的下面,但即使看到该死的源代码也让我想哭......

总之,Node.js 10.5.0 中线程之间的共享对象,这可能吗?如何?

0 投票
1 回答
616 浏览

c++ - C++/Qt - 析构函数中的异常 -> 中止已被调用

介绍

MSVC 2017 64 位,Win 10 64 位,Qt Creator

我有一个类CameraControl建立与相机的连接并且是QMainWindow类的数据成员:

CameraControl 被移动到cameraWorkerThread

在以下cameraWorkerThread的析构函数中被停止并终止RaGaCCMainView

如您所见,如果用户关闭主视图Qt::WA_QuitOnClose(当用户决定关闭主窗口时,为了以一种很好的方式结束相机连接,我调用了一个函数stopImageAcquisition来处理一些相机内容(停止获取图像)并可能引发异常:

问题

我认为这不会有任何问题,因为在析构函数中抛出的东西无论如何都会被忽略

但是,当我关闭主窗口w并引发异常时,我abort() has been called从 msvc 收到一条消息:

在此处输入图像描述

当然,我不知道这里有什么问题。我建议这个问题与工作线程的处理有关......

我希望异常被忽略它应该是什么(或者这也是对本意行为的误解?)

问题

  1. 是什么导致了这个问题?
  2. 我是否需要使用try或者catch是否有其他可行的解决方案?

我总是感谢你的帮助。