首页 文章

使用C线程池库(CTPL)的异常错误

提问于
浏览
1

我正在尝试使用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 回答

  • 2

    文件ctpl_stl.h已在项目网站上修复 . 尝试新版本(0.0.2)而不是旧版本 . 它应该工作,它适用于我 .

    ctpl_stl.h是作为ctpl.h的修改而创建的,以方便那些不想依赖BOOST lockfree库的用户 . ctpl.h是一个更好的选择,它经过了很好的测试,应该更有效率 .

相关问题