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

Exception error using C++ Thread Pool Library (CTPL)

我正在尝试使用 C++ Thread Pool Library (CTPL), which pleasantly consists in a single 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() has been called")。

当我调试时,代码可用的最后一个函数调用是 set_thread,错误在第 202 行。

我注意到当我减少或删除计时器时,它更容易崩溃。

由于这段代码很简单,我一定是漏掉了原理。 我做错了什么?

感谢您的帮助

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

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