问题标签 [threadpool]

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 回答
232 浏览

c# - 有效处理服务器中的定时事件

就我而言,我有一个游戏服务器,CLR 线程池处理套接字,还有一个托管线程池用于其他东西。我试图弄清楚处理事件的最佳方式是什么,比如一个 npc 施法,或者在一段时间后消失。

我可以编写某种 Timer 包装器,为我要执行的每个操作获取一个新的(托管)线程池线程,例如 new TimedEvent(1500, npc.Cast(Spells.FireBall)); 并让它检查系统时间,但是,我认为,有多个像这样运行的计时器,每个单独检查经过的时间是低效的。某种调度程序线程会更好吗?

提前致谢。

0 投票
1 回答
3389 浏览

java - 如何在 WebLogic 8 中使用线程池?

如何从 WebLogic 8.1.6 中的执行队列(=线程池)中获取/使用/返回线程?

0 投票
1 回答
834 浏览

tomcat - Tomcat 线程池使用模式

我正在开发 servlet 过滤器,旨在管理一些在 servlet 处理期间应该可用的资源。由于我对Tomcat不是很熟悉,所以我有一些疑问。是否保证对于单个请求,所有附加的过滤器和 servlet 本身都由单个(和相同的)线程处理?换句话说:我可以假设该FilterChain.doFilter()方法不使用与其调用者不同的线程吗?

0 投票
1 回答
193 浏览

c# - 来自已在线程池中运行的方法的异步调用

我很抱歉标题,但我真的不知道如何更好地描述它。我正在使用线程池来处理服务器端的传入数据,并且在一种方法中我需要异步调用静态方法,但我不知道该怎么做。

当服务器从客户端接收数据时,它使用线程池:

System.Threading.ThreadPool.QueueUserWorkItem(c.ReadData);

在 c.ReadData 中,我需要调用结果不重要的静态方法(将一些数据发送到网站),我不需要知道它。我只是不确定这里最好的解决方案是什么。谢谢!

0 投票
6 回答
4478 浏览

threadpool - 限制对 servlet 的请求数

我们有一个 servlet,由于它的逻辑,它在服务器上占用了更多的虚拟内存。出于这个原因,我们想限制对该服务器的并发请求,例如我们只希望处理 10 个并发请求。其他请求必须在队列中等待。

是否可以为此 servlet 创建和分配自定义线程池来处理这种情况?我们使用的是 WebLogic 服务器 9.2。或者有没有其他更好的方法来做到这一点?欣赏任何想法。

0 投票
1 回答
205 浏览

java - 使用线程池请求服务器程序

我正在寻找一个使用线程池概念接受多个客户端连接的服务器程序的代码,这样每个客户端都可以向服务器发送一个文件,并且服务器应该通过发送相应的响应文件来响应。

我之所以这样问,是因为此时我可以获得多个客户端请求,但我无法生成包含相应响应文件的响应。

0 投票
1 回答
413 浏览

.net - 有没有人用过Ami Bar的SmartThreadPool,可以分享一下经验吗?

我正在研究替代的 ThreadPool 实现,并找到了Ami Bar 的SmartThreadPool实现。它看起来很有趣,所以我的问题是是否有人实际使用过它,如果有的话 - 请分享经验。

谢谢。

附言

我们的线程使用与 Ami Bar 描述的最佳线程使用相匹配 - 许多线程长时间执行 I/O。

顺便说一句,如果还有其他有趣的 ThreadPool 实现,我也有兴趣了解它们。(我也知道 Stephen Toub 的实现)。

0 投票
10 回答
25498 浏览

java - 删除 ThreadPoolExecutor 的所有排队任务

我对ThreadPoolExecutor有一个相当简单的问题。我有以下情况:我必须使用队列中的对象,为它们创建适当的工作任务并将它们提交给 ThreadPoolExecutor。这很简单。但是在关闭场景中,许多工作人员可能会排队等待执行。由于其中一个任务可能运行了一个小时,并且我想要相对快速地正常关闭应用程序,因此我想丢弃 ThreadPoolExecutor 中的所有排队任务,而已经处理的任务应该正常完成。

ThreadPoolExecutor 文档有一个remove()方法,但只允许删除特定任务。purge()仅适用于已取消的 Future 任务。我的想法是清除包含所有排队任务的队列。ThreadPoolExecutor 提供对此内部队列的访问,但文档指出:

方法 getQueue() 允许访问工作队列以进行监视和调试。强烈建议不要将此方法用于任何其他目的。

所以抓住这个队列并清除它不是一种选择。此外,这个文档片段说:

当大量排队的任务被取消时,两个提供的方法 remove(java.lang.Runnable) 和 purge() 可用于协助存储回收。

如何?当然,我可以维护我提交给执行程序的所有任务的列表,并且在关闭的情况下,我遍历所有条目并使用 remove() 方法将它们从 ThreadPoolExecutor 中删除......但是......来吧,这是一个浪费内存并且维护这个列表很麻烦。(例如删除已经执行的任务)

我感谢任何提示或解决方案!

0 投票
1 回答
2275 浏览

c++ - boost线程池库中的问题

我想使用来自开源的 boost 线程池库(http://threadpool.sourceforge.net/)我收到示例程序本身的编译错误。

/usr/include/boost/./threadpool/./detail/locking_ptr.hpp: 在构造函数中 âboost::threadpool::detail::locking_ptr::locking_ptr(volatile T&, const volatile Mutex&) [with T = boost::threadpool ::detail::pool_core >, boost::threadpool::fifo_scheduler, boost::threadpool::static_size, boost::threadpool::resize_controller, boost::threadpool::wait_for_all_tasks>, Mutex = boost::recursive_mutex]â:

/usr/include/boost/./threadpool/./detail/pool_core.hpp:331: 实例化自 âbool boost::threadpool::detail::pool_core::resize(size_t) volatile [with Task = boost::function0 > , SchedulingPolicy = boost::threadpool::fifo_scheduler, SizePolicy = boost::threadpool::static_size, SizePolicyController = boost::threadpool::resize_controller, ShutdownPolicy = boost::threadpool::wait_for_all_tasks]â

/usr/include/boost/./threadpool/size_policies.hpp:75: 实例化自 âstatic void boost::threadpool::static_size::init(Pool&, size_t) [with Pool = boost::threadpool::detail::pool_core >, boost::threadpool::fifo_scheduler, boost::threadpool::static_size, boost::threadpool::resize_controller, boost::threadpool::wait_for_all_tasks>]â

/usr/include/boost/./threadpool/pool.hpp:103: 实例化自 âboost::threadpool::thread_pool::thread_pool(size_t) [with Task = boost::function0 >, SchedulingPolicy = boost::threadpool:: fifo_scheduler, SizePolicy = boost::threadpool::static_size, SizePolicyController = boost::threadpool::resize_controller, ShutdownPolicy = boost::threadpool::wait_for_all_tasks]â

./example/mergesort/mergesort.cpp:152:从这里实例化

/usr/include/boost/./threadpool/./detail/locking_ptr.hpp:50:错误:“class boost::recursive_mutex”没有名为“lock”的成员

/usr/include/boost/./threadpool/./detail/locking_ptr.hpp: 在析构函数中 âboost::threadpool::detail::locking_ptr::~locking_ptr() [with T = boost::threadpool::detail:: pool_core >, boost::threadpool::fifo_scheduler, boost::threadpool::static_size, boost::threadpool::resize_controller, boost::threadpool::wait_for_all_tasks>, Mutex = boost::recursive_mutex]â:

/usr/include/boost/./threadpool/./detail/pool_core.hpp:331: 实例化自 âbool boost::threadpool::detail::pool_core::resize(size_t) volatile [with Task = boost::function0 > , SchedulingPolicy = boost::threadpool::fifo_scheduler, SizePolicy = boost::threadpool::static_size, SizePolicyController = boost::threadpool::resize_controller, ShutdownPolicy = boost::threadpool::wait_for_all_tasks]â

/usr/include/boost/./threadpool/size_policies.hpp:75: 实例化自 âstatic void boost::threadpool::static_size::init(Pool&, size_t) [with Pool = boost::threadpool::detail::pool_core >, boost::threadpool::fifo_scheduler, boost::threadpool::static_size, boost::threadpool::resize_controller, boost::threadpool::wait_for_all_tasks>]â

/usr/include/boost/./threadpool/pool.hpp:103: 实例化自 âboost::threadpool::thread_pool::thread_pool(size_t) [with Task = boost::function0 >, SchedulingPolicy = boost::threadpool:: fifo_scheduler, SizePolicy = boost::threadpool::static_size, SizePolicyController = boost::threadpool::resize_controller, ShutdownPolicy = boost::threadpool::wait_for_all_tasks]â

./example/mergesort/mergesort.cpp:152:从这里实例化

/usr/include/boost/./threadpool/./detail/locking_ptr.hpp:58:错误:“class boost::recursive_mutex”没有名为“unlock”的成员

有人可以帮助解决这个问题吗?

问候, 阿南丹

0 投票
1 回答
1385 浏览

c# - 紧凑框架的 ThreadPool.RegisterWaitForSingleObject?

我必须将一个项目移植到紧凑的框架中。并且无法转换为

ThreadPool.RegisterWaitForSingleObject (WaitHandle, WaitOrTimerCallback, object, int, bool)

c# 中 ThreadPool.RegisterWaitForSingleObject 的替代方法可能是什么