gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:52:17 32 4
gpt4 key购买 nike

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

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com