问题标签 [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 回答
266 浏览

c++ - 工作人员是否可以通过 Qt 中的信号/插槽连接来停止自己的线程?

我正在尝试为并行计算实现线程工作者。我遇到的问题是 的quit()插槽thread没有被触发,因此应用程序在while(thread->isRunning()). 是否可以停止threadworker它们之间使用信号槽连接?这是我的代码:

主.cpp:

工人.h:

工人经理.h:

0 投票
0 回答
87 浏览

c# - IHttpAsyncHandler 刷新 - 工作线程与 io 线程

我正在使用IHttpAsyncHandlerwithBeginProcessRequestEndProcessRequest方法。假设我在方法下有以下代码EndProcessRequest

Write方法本身仅写入内部缓冲区,但EndProcessRequest完成后,缓冲区将刷新到流并关闭连接。

我的问题是哪个线程正在执行刷新?运行EndProcessRequest代码的工作线程还是 IO 线程?

0 投票
1 回答
69 浏览

java - 为什么测试套件完成后我的线程没有退出?

我创建了一个自动化测试套件,它有一个在所有测试用例的后台同时运行的线程池,以获得给定的系统和性能指标。每个线程都使用 JSch 连接来执行其 shell 命令,并且它们正在接收 [JSchException: Channel not open exceptions]。

关键问题是测试套件继续永远运行,因为即使所有测试用例都结束了,线程也没有退出。但我不确定为什么...

当我检查线程转储时,我发现线程没有退出,因为它们处于 BLOCKED 状态。

有人对此有解释吗?或者对解决这个问题有什么帮助?

0 投票
2 回答
5011 浏览

c# - 从工作线程刷新 DataGrid

我的 WPF 应用程序中有一个 DataGrid。对于此 DataGrid,我已将 ItemSource 设置如下

MyItems 是 MyViewModel 中声明的 MyItem 列表

MyItem 具有一组属性,每个属性都映射到 DataGrid 中的每一列。在初始化时,我正在填写 MyItems;因此 DataGrid 在每一列中显示 MyItems 值。

在按钮命令中,我正在创建一个工作线程,工作线程修改网格中显示的 MyItems 的属性。例如,MyItem 有一个名为“Status”的属性,它绑定到网格列。状态值在工作线程中更改。我正在调用的工作线程结束

但是网格中的状态列值没有更新。

单击数据网格列后,只有值会刷新。如何从工作线程刷新数据网格?

0 投票
1 回答
384 浏览

c# - Threadpool with endless worker threads

I have class which implements an endless worker thread like this example, in my case representing a body. During runtime I will have between 0 and ~8 instances live at any time with instances constantly being created and destroyed.

Most of the time this class has a lifecycle of 30 seconds to 5 minutes but occasionally there may be a number of instances created and destroyed in a relatively short period of time. This is where I tend to run into performance issues given the low spec hardware this code is running on.

I would now like to rewrite the behavior so that I use a ThreadPool for my collection of running workers and I am struggling to find the correct way to structure the code.

Basically the code I have at the moment is something like

So how do I re-write the above to utilize a ThreadPool correctly and so that I can cancel running threads on the ThreadPool as required? Do I use CancellationTokens or ManualResetEvents to control the threads?

0 投票
2 回答
1240 浏览

c# - 从工作线程更新视图模型会引发跨线程问题

最近,我一直在测试类型绑定,该绑定INotifyPropertyChanged从工作线程抛出跨线程问题中实现和更新属性。

这是示例代码:

上面的 viewmodel 已与 windows 窗体中的标签文本绑定并从工作线程更新标签值。

从工作线程更新 label1 文本会导致跨线程问题:

到目前为止,我可以相信这是由于从工作线程更新 UI。是否有任何解决方法可以使其线程安全而不改变按钮单击方法,即可能在视图模型中使线程安全。

0 投票
2 回答
543 浏览

android - 即使在后台线程中执行操作,应用程序也显示在主线程中做太多工作

嗨,我每次执行查询时都会在日志中收到此消息。但是查询只在后台线程中执行,表没有超过 500 行,而且我总是应用限制 100。请不要简单地给出一些链接并说这个问题已经回答。

我已经阅读了很多关于这个的答案。但它仍然没有解决我的问题。谁能给我适当的理由或解决我的问题?

编舞:跳过98帧!应用程序可能在其主线程上做了太多工作。

以下是我的可运行类,我将其称为 new Thread(new MessageLoaderThread(limit)).start();

谢谢

0 投票
1 回答
7579 浏览

android - Android:多个意图服务或一个具有多个意图的意图服务?

我对intentService 有点困惑。文档说,如果您向一个 intentService 发送多个任务(意图),那么它将在一个单独的线程上一个接一个地执行它们。我的问题是 - 是否可以同时拥有多个 intentService 线程?您如何在代码中区分在同一个 intentService(同一个线程)上创建三个不同的意图,或者三个独立的 intentService,每个都有自己的线程和一个意图执行?

换句话说,当您执行命令 startService(intent) 时,您是将意图放在一个队列中还是每次都启动一个新队列?

0 投票
1 回答
1226 浏览

c - WTSRegisterSessionNotification 导致进程挂起

我遵循了 WinProg 网站上的“A Simple Window”教程

当教程中的代码在没有 C 运行时库的情况下编译时,一切似乎都按预期工作。窗口被创建并以可见的方式显示给用户。

如果我通过按关闭按钮关闭窗口,则窗口将被破坏并退出进程——该进程不再在本地计算机上运行。

但是,当我链接到 WTS 库并添加对 WTSRegisterSessionNotification 函数的调用时,该进程在关闭其相应窗口后继续在本地计算机上运行。

此行为似乎仅在调用 WTSRegisterSessionNotification 后从 WinMain 返回时发生。

我的猜测是 WTSRegisterSessionNotification 创建了某种永远不会被通知退出的工作线程。从 WinMain 返回似乎不会导致 ExitProcess 调用,可能是因为代码是在没有 C 运行时库的情况下编译的。

在从 WinMain 返回之前调用 ExitProcess 可以避免该问题。但这感觉不是处理这种情况的正确方法。

我的问题是:是否有一个我忽略的 WTS API 函数可以/应该在从 WinMain 返回之前调用以确保进程退出?

代码示例:

编译器命令行:

链接器命令行:

0 投票
4 回答
544 浏览

android - Android工作线程持续多长时间?

我看过一些关于这个主题的帖子,但没有一个给出令人满意的答案。

假设我Activity在其onCreate()方法中从我的 main (one-and-only) 启动了一个工作线程。然后我打电话finish()导致Activity终止。

此时,它所属的任务被销毁(因为其中不再有任何任务Activity)。应用程序(以及运行它的进程)可能会继续存在,但是,以空的“骨架”形式存在,因此可以在需要时快速重新启动它(尽管它很容易被系统杀死)。

假设以上是正确的——工作线程什么时候被杀死?只有当系统主动销毁进程时才被杀死?

就我而言,我的工作线程作为蓝牙连接的侦听器存在;收到后,它将Activity再次启动所需的内容。在这种情况下,没有正在运行的组件(Activity、或)。在我看来,这应该可行,只是有些东西正在杀死我的工作线程。ServiceContentProviderBroadcastReceiver

我知道我可以通过使用背景来做到这一点(并且痛苦更少)Service。但是,我很好奇为什么这不起作用。

谢谢,巴里