草庐IT

Threadpool

全部标签

维护进程池的 Java 库

我正在开发一个需要并发的Java守护进程:一个无限循环,它监听一个作业队列(redis)并将每个作业分配给一个工作人员。工作人员不一定必须返回值。我发现Executors非常有用,我正在使用ThreadPoolExecutor维护多个工作线程。不过,这些工作人员运行第3方代码,需要尽可能隔离运行,避免共享静态属性。我的问题:是否有任何Java库/框架提供类似于执行器的功能,例如:工作人员池自动调整池大小..但是生成进程而不是线程? 最佳答案 我知道您有第3方库,您希望以某种方式独立运行——例如,它们无法访问静态变量。我会runyou

Java ExecutorService 暂停/恢复特定线程

有没有办法使用ExecutorService暂停/恢复特定线程?privatestaticExecutorServicethreadpool=Executors.newFixedThreadPool(5);假设我想停止id=0的线程(假设每个线程都被分配了一个递增的id,直到达到线程池的大小)。一段时间后,比方说,通过按下一个按钮,我想恢复该特定线程并让所有其他线程保持其当前状态,可以暂停或恢复。我在Java文档中发现了一个未完成版本的PausableThreadPoolExecutor。但它不适合我的需要,因为它会恢复池中的所有线程。如果无法使用ExecutorService的默认实

java - Glassfish线程池问题

我们使用的是Glassfish3.0.1,响应时间非常长;对于25%的POST/PUT请求,大约需要5分钟,当响应返回时,前置负载均衡器已经超时。我的理论是请求正在排队等待可用线程。我认为这是因为访问日志显示请求需要几秒钟才能完成,但执行请求的时间比我预期的晚了五分钟。有没有人对调试线程池的运行情况有任何建议?或者最适合他们的设置是什么?是否需要定期进行线程转储,还是一次性转储就足够了? 最佳答案 乍一看,这似乎与线程池本身关系不大。在不太了解网络设置的其余部分的情况下,我会检查以下几点:负载平衡器池中是否有死机/无响应节点?这可能

c++ - 如何将 Boost 线程池从 fifo 转换为优先级?

我正在开发一个Boost线程池。我有这样的结构:classSimThreadPool{staticSimThreadPool*getInstance();boost::threadpool::prio_pool&getThreadPool(){returnmThreadPool;}simTerrain::SimThreadPool::SimThreadPool():mThreadPool(boost::threadpool::fifo_pool(1)){}boost::threadpool::prio_poolmThreadPool;}当我需要一个线程时,我这样调用它:SimThrea

c++ - 无锁线程池

对于标准C++11和/或在一般上下文中,以下推理是否正确?在实现线程池时,人们通常不想让那些没有工作可做的线程忙于循环。因此,需要某种std::condition_variable。因此,需要某种std::mutex。因此,不可能有一个无锁线程池(没有忙循环)。或者我是否缺少一些使它成为可能的操作系统机制?您能否提供额外的推理来表明不存在无锁非忙循环线程池? 最佳答案 如果允许忙等待,那当然是完全可以的。但是没有忙等待,你需要操作系统的帮助-它不一定是互斥体,它当然可以是read,poll,WaitForMultipleObject

c++ - 安全销毁线程池

考虑以下用C++14编写的普通线程池的实现。threadpool.hthreadpool.cpp观察每个线程都在休眠,直到它被通知唤醒——或一些虚假的唤醒调用——并且以下谓词计算为true:std::unique_locklock(this->instance_mutex_);this->cond_handle_task_.wait(lock,[this]{return(this->destroy_||!this->tasks_.empty());});此外,观察ThreadPool对象使用数据成员destroy_来确定它是否被销毁——析构函数已被调用。将此数据成员切换为true将通知

如何在ThreadPool执行函数中仅发送电子邮件一次?

这是我用来使API操作更快10倍的功能:defload_url(req,id,data,timeout):headers={'Authorization':'AT-API111111222222333333344444445555555'}r=req.post("https://service.com/api/v1/compare",headers=headers,data=data,timeout=timeout)data=r.json()printidifdata['error']:printdata['error']else:c.execute("UPDATEoffersSETvalid

c++ - QThreadPool 示例

我正在寻找一些关于使用QThreadPool的简明示例。这是我的使用方法:QThreadPool*thread_pool=QThreadPool::globalInstance();MyThread*thread=newMyThread();thread_pool->start(thread);classMyThread:publicQRunnable{public:MyThread();~MyThread();voidrun();};voidMyThread::run(){qDebug()以上是正确的做法吗?PS:我在引用中看到了waitForDone,请问什么时候调用waitFor

c++ - 实现一个条件变量来解决多线程忙等待

我的程序通过使用空闲的工作线程将多行文本打印到控制台。然而,问题是工作线程在打印文本之前没有等待前一个工作线程完成,这导致文本被插入到另一个工作线程的文本中,如下图所示:我需要通过使用std::condition_variable来解决这个问题——称为忙等待问题。我已经尝试在下面的代码中实现条件变量,基于theexamplefoundatthislink,和thefollowingstackoverflowquestion对我有帮助,但还不够,因为我对C++的一般知识有限。所以最后我只是把所有的东西都注释掉了,我现在不知所措。//threadpool.cpp//Compilewith:

C++ 主/工

我正在寻找一个跨平台的C++master/worker库或工作队列库。一般的想法是我的应用程序将创建某种任务或工作对象,将它们传递给工作主机或工作队列,这将依次在单独的线程或进程中执行工作。为了提供一些上下文,该应用程序是一个CD翻录器,我想要并行化的任务是“翻录轨道”、“将WAV编码为Mp3”等。我的基本要求是:必须支持可配置数量的并发任务。必须支持任务之间的依赖关系,以便在它们所依赖的所有任务都完成之前不会执行任务。必须允许取消任务(或者至少不能阻止我将取消编码到我自己的任务中)。必须允许将状态和进度信息报告回主应用程序线程。必须在Windows、MacOSX和Linux上工作必须