问题标签 [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.
c++ - 工作人员是否可以通过 Qt 中的信号/插槽连接来停止自己的线程?
我正在尝试为并行计算实现线程工作者。我遇到的问题是 的quit()
插槽thread
没有被触发,因此应用程序在while(thread->isRunning())
. 是否可以停止thread
在worker
它们之间使用信号槽连接?这是我的代码:
主.cpp:
工人.h:
工人经理.h:
c# - IHttpAsyncHandler 刷新 - 工作线程与 io 线程
我正在使用IHttpAsyncHandler
withBeginProcessRequest
和EndProcessRequest
方法。假设我在方法下有以下代码EndProcessRequest
:
该Write
方法本身仅写入内部缓冲区,但EndProcessRequest
完成后,缓冲区将刷新到流并关闭连接。
我的问题是哪个线程正在执行刷新?运行EndProcessRequest
代码的工作线程还是 IO 线程?
java - 为什么测试套件完成后我的线程没有退出?
我创建了一个自动化测试套件,它有一个在所有测试用例的后台同时运行的线程池,以获得给定的系统和性能指标。每个线程都使用 JSch 连接来执行其 shell 命令,并且它们正在接收 [JSchException: Channel not open exceptions]。
关键问题是测试套件继续永远运行,因为即使所有测试用例都结束了,线程也没有退出。但我不确定为什么...
当我检查线程转储时,我发现线程没有退出,因为它们处于 BLOCKED 状态。
有人对此有解释吗?或者对解决这个问题有什么帮助?
c# - 从工作线程刷新 DataGrid
我的 WPF 应用程序中有一个 DataGrid。对于此 DataGrid,我已将 ItemSource 设置如下
MyItems 是 MyViewModel 中声明的 MyItem 列表
MyItem 具有一组属性,每个属性都映射到 DataGrid 中的每一列。在初始化时,我正在填写 MyItems;因此 DataGrid 在每一列中显示 MyItems 值。
在按钮命令中,我正在创建一个工作线程,工作线程修改网格中显示的 MyItems 的属性。例如,MyItem 有一个名为“Status”的属性,它绑定到网格列。状态值在工作线程中更改。我正在调用的工作线程结束
但是网格中的状态列值没有更新。
单击数据网格列后,只有值会刷新。如何从工作线程刷新数据网格?
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?
c# - 从工作线程更新视图模型会引发跨线程问题
最近,我一直在测试类型绑定,该绑定INotifyPropertyChanged
从工作线程抛出跨线程问题中实现和更新属性。
这是示例代码:
上面的 viewmodel 已与 windows 窗体中的标签文本绑定并从工作线程更新标签值。
从工作线程更新 label1 文本会导致跨线程问题:
到目前为止,我可以相信这是由于从工作线程更新 UI。是否有任何解决方法可以使其线程安全而不改变按钮单击方法,即可能在视图模型中使线程安全。
android - 即使在后台线程中执行操作,应用程序也显示在主线程中做太多工作
嗨,我每次执行查询时都会在日志中收到此消息。但是查询只在后台线程中执行,表没有超过 500 行,而且我总是应用限制 100。请不要简单地给出一些链接并说这个问题已经回答。
我已经阅读了很多关于这个的答案。但它仍然没有解决我的问题。谁能给我适当的理由或解决我的问题?
编舞:跳过98帧!应用程序可能在其主线程上做了太多工作。
以下是我的可运行类,我将其称为 new Thread(new MessageLoaderThread(limit)).start();
谢谢
android - Android:多个意图服务或一个具有多个意图的意图服务?
我对intentService 有点困惑。文档说,如果您向一个 intentService 发送多个任务(意图),那么它将在一个单独的线程上一个接一个地执行它们。我的问题是 - 是否可以同时拥有多个 intentService 线程?您如何在代码中区分在同一个 intentService(同一个线程)上创建三个不同的意图,或者三个独立的 intentService,每个都有自己的线程和一个意图执行?
换句话说,当您执行命令 startService(intent) 时,您是将意图放在一个队列中还是每次都启动一个新队列?
c - WTSRegisterSessionNotification 导致进程挂起
我遵循了 WinProg 网站上的“A Simple Window”教程。
当教程中的代码在没有 C 运行时库的情况下编译时,一切似乎都按预期工作。窗口被创建并以可见的方式显示给用户。
如果我通过按关闭按钮关闭窗口,则窗口将被破坏并退出进程——该进程不再在本地计算机上运行。
但是,当我链接到 WTS 库并添加对 WTSRegisterSessionNotification 函数的调用时,该进程在关闭其相应窗口后继续在本地计算机上运行。
此行为似乎仅在调用 WTSRegisterSessionNotification 后从 WinMain 返回时发生。
我的猜测是 WTSRegisterSessionNotification 创建了某种永远不会被通知退出的工作线程。从 WinMain 返回似乎不会导致 ExitProcess 调用,可能是因为代码是在没有 C 运行时库的情况下编译的。
在从 WinMain 返回之前调用 ExitProcess 可以避免该问题。但这感觉不是处理这种情况的正确方法。
我的问题是:是否有一个我忽略的 WTS API 函数可以/应该在从 WinMain 返回之前调用以确保进程退出?
代码示例:
编译器命令行:
链接器命令行:
android - Android工作线程持续多长时间?
我看过一些关于这个主题的帖子,但没有一个给出令人满意的答案。
假设我Activity
在其onCreate()
方法中从我的 main (one-and-only) 启动了一个工作线程。然后我打电话finish()
导致Activity
终止。
此时,它所属的任务被销毁(因为其中不再有任何任务Activity
)。应用程序(以及运行它的进程)可能会继续存在,但是,以空的“骨架”形式存在,因此可以在需要时快速重新启动它(尽管它很容易被系统杀死)。
假设以上是正确的——工作线程什么时候被杀死?只有当系统主动销毁进程时才被杀死?
就我而言,我的工作线程作为蓝牙连接的侦听器存在;收到后,它将Activity
再次启动所需的内容。在这种情况下,没有正在运行的组件(Activity
、或)。在我看来,这应该可行,只是有些东西正在杀死我的工作线程。Service
ContentProvider
BroadcastReceiver
我知道我可以通过使用背景来做到这一点(并且痛苦更少)Service
。但是,我很好奇为什么这不起作用。
谢谢,巴里