一个简单的线程池示例,可以自定义线程数量和执行任务,代码简洁可扩展性强。在使用上也很方便。下面是一个简单的调用 int main() { xcyk::ThreadPool threadPool("xcyk"); SYSTEM_INFO SystemInfo; GetSystemInfo(&SystemInfo;); DWORD theadnum = SystemInfo.dwNumberOfProcessors + 2; threadPool.setMaxQueueSize(10); threadPool.start(theadnum); for (int i = 0; i < 50; ++i) { auto task = bind(Test, i); threadPool.run(task); } getchar(); return 0; }
2022-02-24 08:40:57 5KB C++ 线程池
1
DEMO程序必须重新编译运行才能修正原资源死锁问题 取自卢伟的专栏DELPHI 线程池代码(http://blog.csdn.net/babyvspp/archive/2008/01/01/2008234.aspx),封装的十分完美,用法也非常简单,可以根据使用者设定的初始工作线程数和最大线程数以及线程执行时间自动增加工作线程。 此发布修改了原作者在线程池Free时的一点问题:“不能结束工作中的工作者线程(资源死锁)”。 用法: // 创建线程池 FThreadPool := TThreadsPool.Create(Self); // 创建线程池 FThreadPool.ThreadsMin := 5; // 初始工作线程数 FThreadPool.ThreadsMax := 50; // 最大允许工作线程数 FThreadPool.OnProcessRequest := DealwithCommRecvData; // 线程工作函数(DealwithCommRecvData在工作者线程的Execute方法中被调用) // 使用线程池 var  AWorkItem: TRecvCommDataWorkItem; // 继承自TWorkItem begin  AWorkItem := TRecvCommDataWorkItem.Create;  Move(PData[0], AWorkItem.FRecvData[0], PDataLen);  AWorkItem.FRecvDataLen := PDataLen;  FThreadPool.AddRequest(AWorkItem); // 向线程池分配一个任务 end;
1
线程池示例(包含自定义拒绝策略),演示了如何创建一个线程池,以及添加到队列的过程,先添加到工作线程,然后是缓存队列,最后是创建临时线程
2021-08-15 17:04:33 2KB 多线程 ThreadPoolExecut 线程池 java
1
uThreadPool线程池示例(查找0-1亿之间的质数任务)。 好东西,不是用分可以衡量的。为了搞懂如何写工作任务类。我写了3天3夜。
2021-04-06 00:10:27 595KB 线程 线程池 uThreadPool
1