问题标签 [queueuserworkitem]
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# - 一位读者,许多作者
相关:如何从 ThreadPool.QueueUserWorkItem 中捕获异常?
我在由ThreadPool.QueueUserWorkItem()启动的后台线程中捕获异常,并通过共享实例变量将它们传播到主线程。
后台线程这样做:
_pendingException 有多个潜在的编写者——多个后台线程——所以我用锁保护它。
在主线程中,我必须在阅读之前获得锁_pendingException
吗?或者我可以简单地这样做:
编辑:
ps:我宁愿不锁定读者线程,因为它在热路径上,我会非常非常频繁地获取和释放锁定。
c# - 我是否正确使用 ThreadPool.QueueUserWorkItem?
我正在开发一个 ASP.NET MVC 应用程序。我想在事件发生时产生几个线程,我不关心线程的返回值,我想进行异步调用,所以我使用 ThreadPool.QueueUserWorkItem ,
我已将事件处理函数附加到事件
这就是我提出事件的方式,
以上所有代码都发生在同一个类中。只有事件处理函数在其他类中我需要在完成后杀死我的线程吗?如果我做错了什么,请建议我。
c++ - 我的线程池只做 4~5 个线程。为什么?
我使用 QueueUserWorkItem() 函数来调用线程池。
我尝试了很多工作。(大约 30000)
但是通过任务管理器,我的应用程序在我按下开始按钮后只创建了 4~5 个线程。
我读了 MSDN,它说默认的线程限制数约为 500。
为什么我的应用程序中只创建了几个线程?
我很想加快我的应用程序的速度,我认为这个线程池是减慢我的应用程序的原因之一。
谢谢
c++ - C++ 中带有 COM 的 QueueUserWorkItem
我有一个性能问题,客户端在我的 C++ 应用程序的 DOM 中创建数百个特定类型的对象“Foo”。每个 Foo 实例都有自己的异步工作队列和自己的线程。显然,这不成比例。
我需要在工作队列之间共享线程,我不想重新发明轮子。我需要支持XP,所以不能使用Vista/Win7线程池。处理每个队列项需要完成的工作包括在多线程 COM 单元中进行 COM 调用。XP 线程池的文档说可以在线程工作者函数回调中使用 MTA 单元调用 CoInitializeEx()。我编写了一个测试应用程序并验证它是否有效。我让应用程序在 WorkItem 回调函数中使用和不使用 CoInitializeEx/CoUninitialize 对运行了 100 万次迭代。CoInit* 调用需要 35 秒,没有调用需要 5 秒。这对我的应用程序来说开销太大了。由于线程池是每个进程的,并且第 3 方代码在我的进程中运行,我假设它不是
鉴于所有这些,有什么方法可以使用 Win32 线程池吗?是我遗漏了什么,还是 XP 线程池对于高性能 COM 应用程序毫无用处?我只需要创建自己的线程共享系统吗?
c# - C# 使用 ThreadPool 时,我可以将多个数据传递到我的目标方法吗?
使用ThreadPool.QueueUserWorkItem (WaitCallback, Object)
我的目标方法和数据启动一个线程。我可以将多个数据传递到我的方法中吗?第二个参数QueueUserWorkItem (WaitCallback, Object)
可以是数组吗?
c# - C# 线程队列同步
问候,我正在尝试播放一些音频文件而不举起 GUI。以下是代码示例:
情况是样本没有按顺序播放。一些在另一个之前播放,我需要解决这个问题,以便样本按顺序一个接一个地播放。
请问我该如何实现?
谢谢你。
编辑:ThreadPool.QueueUserWorkItem(new WaitCallback(FireAttackProc), fireResult);
我已将所有声音片段都放在 FireAttackProc 中。这没有做什么,我想要的是:等到线程停止运行,然后再启动一个新线程,这样样本就不会重叠。
c# - ThreadPool.QueueUserWorkItem 的 C# 多 CPU
我有一个程序使用:
在 Windows7 和 Vista 上运行良好。
当我尝试在 XP 上运行它时,结果与其他的有点不同。
我只是想知道为了正确执行 QueueUserWorkItem 我需要双 CPU 系统吗?
我尝试测试的 XP 安装了 .Net 3.5。
输入最受欢迎。
编辑:回调过程播放一系列声音文件。win7和vista都玩。但在 xp 中只有几个播放。我没有从程序中得到任何例外。
编辑:是的,XP 盒子是单核的。5岁以上。
编辑:我的应用程序使用 Winsock,我在 XP 机器上运行客户端和服务器。我将尝试在每台机器上运行一个实例,看看它是如何反应的。
编辑:你是如何播放声音的?
c++ - Windows 线程:beginthread 或 QueueUserWorkItem (C++)
我想知道是否将 beginthread 或 QueueUserWorkItem 用于 C++ 中的线程方法。这两个 API 之间有什么区别,它们更适合什么环境?
谢谢,
顺便说一句,我读过这个问题Windows 线程:_beginthread vs _beginthreadex vs CreateThread C++
c# - Windows 服务未完全启动
我在 c# 中创建了这个小型 Windows 服务,我相信我的 ThreadPool 代码可能做错了什么,导致我的 Windows 服务无法完全启动。如果您必须知道,Windows 服务似乎运行得很好,只是在查看服务控制台时,它仍然声明它正在“启动”。当我重新启动服务器时,即使我已将其设置为自动启动,该服务似乎又停止了。
请在下面查看我的代码:
c++ - How does one call into COM from worker thread created with NT's QueueUserWorkItem?
I've got a set of tasks that I slaved to the NT threadpool using QueueUserWorkItem
. I need to make some calls to COM from these separate threads to access data inside WMI. I'm unsure, however, how the correct calls to CoInitializeEx
need to be made.
Basically, the CoInitializeEx
docs say that the call should be made once per thread. But I don't own these threads—NT does. I don't know when they get created or destroyed, or anything of that nature. Do I basically call ::CoInitializeEx()
(with COINIT_MULTITHREADED
) at the beginning of the thread routine, and then ::CoUninitialize()
at the end of my thread routine?