我正在尝试使用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行 .
我注意到当我减少或删除计时器时,它更容易崩溃 .
由于这段代码很简单,我原本肯定错过了一些东西 . 我究竟做错了什么 ?
谢谢你的帮助
1 回答
文件ctpl_stl.h已在项目网站上修复 . 尝试新版本(0.0.2)而不是旧版本 . 它应该工作,它适用于我 .
ctpl_stl.h是作为ctpl.h的修改而创建的,以方便那些不想依赖BOOST lockfree库的用户 . ctpl.h是一个更好的选择,它经过了很好的测试,应该更有效率 .