作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 C++ Thread Pool Library (CTPL) , 它令人愉快地包含在一个 header file 中.
为此,我创建了一个非常简单的测试程序。这是代码:
#include <iostream>
#include "ctpl_stl.h"
void myFunction(int threadID_0)
{
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
int main()
{
ctpl::thread_pool p(2); // We create the pool with 2 threads
p.push(myFunction); // We add work
p.push(myFunction);
p.push(myFunction);
p.push(myFunction);
p.push(myFunction);
p.push(myFunction);
p.push(myFunction);
p.push(myFunction);
p.push(myFunction);
p.stop(true); // We wait for all the tasks to be performed
return 0;
}
当我执行这个程序时,有时它能工作,有时却不能(我收到一条消息“R6010 - abort() 已被调用”)。
当我调试时,最后一个函数调用是 set_thread,错误在第 202 行。
我注意到当我减少或删除计时器时,它更容易崩溃。
由于这段代码很简单,我一定是漏掉了什么原理。我做错了什么?
谢谢你的帮助
最佳答案
文件 ctpl_STL.h 固定在项目网站上。尝试使用新版本 (0.0.2) 而不是旧版本。它应该有用,对我有用。
ctpl_STL.h 是作为 ctpl.h 的修改版创建的,目的是为了方便那些不想依赖 BOOST 无锁库的用户。ctpl.h 是一个更好的选择,它经过了很好的测试并且应该更有效率。
关于c++ - 使用 C++ 线程池库 (CTPL) 的异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30778799/
我是一名优秀的程序员,十分优秀!