boost-thread相关内容

对于生产者和多个消费者来说,std::queue 线程是安全的

如何使队列线程安全?我需要推/弹出/前/后并清除.boost中是否有类似的东西? 我有一个生产者和一个或多个消费者. 解决方案 您必须保护对 std::queue 的访问.如果你使用 boost 保护它使用 boost::mutex.现在,如果您有多个阅读器和一个编写器线程,请查看 boost::shared_lock(用于阅读器)和 boost::unique_lock(用于编写器 ..
发布时间:2022-01-21 11:58:03 C/C++开发

Boost.Thread 链接 - boost_thread 与 boost_thread-mt

我不清楚 Boost 存在哪些链接选项.Thread 1.34.1 库.我在 Ubuntu 8.04 上,我发现在链接编译和运行期间使用 boost_thread 或 boost_thread-mt 时,但我没有看到任何关于以上链接中的这些或任何其他链接选项. 有哪些 Boost.Thread 链接选项可用,它们是什么意思? 解决方案 嗯... 第一个有趣的是,名称中的 -mt ..
发布时间:2022-01-11 15:34:36 其他开发

多线程可以加速内存分配吗?

我正在使用 8 核处理器,并且正在使用 Boost 线程来运行大型程序.从逻辑上讲,程序可以分成多个组,每个组由一个线程运行.在每个组中,某些类总共调用了 10000 次“new"运算符.Rational Quantify 显示“新"内存分配在程序运行时占用了最长的处理时间,并且正在减慢整个程序. 我可以加快系统速度的一种方法是在每个“组"内使用线程,以便 10000 次内存分配可以并行发生 ..

如何让 boost::thread_group 执行固定数量的并行线程

这是创建thread_group并并行执行所有线程的代码: boost::thread_group 组;for (int i = 0; i 此代码将一次执行所有线程.我想要做的是并行执行它们,但最多 4 个.当 on 终止时,将执行另一个,直到没有更多要执行为止. 解决方案 另一个更有效的解决方案是让每个线程在完成时回调到主线程,主线程上的处理程序可以启动一个新线程每一次.这可以防止 ..
发布时间:2021-12-24 15:33:17 C/C++开发

如何将参数传递给 boost::thread?

thread_ = boost::thread( boost::function( boost::bind( &clientTCP::run , this ) ) ); run 是否可能有这样的参数: void clientTCP::run(boost:functionfunc); 如果是,我的 boost::thread 调用应该如何编写 谢谢. 解决方案 下面的代码boos ..
发布时间:2021-12-24 15:30:28 C/C++开发

在完成工作后立即删除 boost::thread 对象的最佳方法是什么?

我用一个 new 操作符创建了 boost::thread 对象并继续而不等待这个线程完成它的工作: void do_work(){//执行一些 I/O 工作}boost::thread *thread = new boost::thread(&do_work); 我想,当工作完成时,有必要删除thread.不显式等待线程终止的最佳方法是什么? 解决方案 boost::thread 对 ..
发布时间:2021-12-24 15:25:19 C/C++开发

使用 boost 创建线程池

是否可以使用 boost 的线程创建线程池?我正在查看 boost 的所有库,但找不到线程池管理器(或类似的东西)...有办法吗? tnx! 解决方案 有一个非官方的(尚未)threadpool 在提升中.但是自己实现一个不是问题,特别是如果很好的通用性不是主要目标.想法:您的线程池可以使用 TaskType 类型和工作人员数量进行参数化.必须为 TP 提供采用 TaskType 的 ..
发布时间:2021-12-24 15:11:49 C/C++开发

C++ 线程池

在生产代码中使用 C++ 的线程池的好的开源实现是什么(类似于 boost)? 请提供您自己的示例代码或示例代码用法的链接. 解决方案 我认为它仍然不被 Boost 接受,但是一个很好的起点:线程池.一些用法示例,来自网站: #include "threadpool.hpp"使用命名空间 boost::threadpool;//一些示例任务void first_task(){... ..
发布时间:2021-12-24 15:10:52 C/C++开发

如何在 C++ 中使用 boost 创建线程池?

如何在C++中使用boost创建线程池,以及如何将任务分配给线程池? 解决方案 过程非常简单.首先创建一个 asio::io_service 和一个 thread_group.用链接到 io_service 的线程填充 thread_group.使用 boost::bind功能. 要停止线程(通常在您退出程序时)只需停止 io_service 并加入所有线程. 您应该只需要这些 ..
发布时间:2021-12-24 14:59:26 C/C++开发

boost shared_mutex 的示例(多次读取/一次写入)?

我有一个多线程应用程序,它必须经常读取一些数据,并且偶尔会更新这些数据.现在互斥锁可以安全地访问该数据,但它很昂贵,因为我希望多个线程能够同时读取,并且仅在需要更新时将它们锁定(更新线程可以等待其他线程完成). 我认为这是 boost::shared_mutex 应该做的,但我不清楚如何使用它,也没有找到一个明确的例子. 有没有人有一个简单的例子可以让我开始使用? 解决方案 看 ..
发布时间:2021-12-06 11:14:43 C/C++开发

我是否过度设计了每线程信号阻塞?

在我的应用程序中,我通常希望拦截 SIGINT 和 SIGTERM 信号以便正常关闭. 为了防止工作线程“窃取"信号,我在每个入口点这样做: //在该线程中阻塞信号sigset_t 信号集;sigaddset(&signal_set, SIGINT);sigaddset(&signal_set, SIGTERM);sigaddset(&signal_set, SIGHUP);sigadds ..
发布时间:2021-06-23 18:34:57 C/C++开发

如何使Boost dylibs在OS X上通用(i386& x86_64)?

我正在尝试将Boost库编译成通用二进制文件(即包含“胖"文件,其中包含针对i386和x86_64体系结构的构建). 确保互联网安全和 SO 我整理了以下说明. 下载增强​​版本(例如,从 http://www.boost.org/users/下载/) 在下载的文件夹中,键入 ./bootstrap.sh (或者,在我的情况下为 ./bootstrap.sh --with-lib ..

链接升压时出错

我是增强线程的新手,正在尝试编译一个发现的简单示例: #include#include#include无效workerFunc(){boost :: posix_time :: seconds workTime(3);std :: cout ..
发布时间:2021-04-15 20:55:07 C/C++开发

用另一个超时线程杀死Boost线程

我想在经过一定时间后结束线程 WorkerThread .我当时正在考虑使用第二个线程 TimeoutThread ,它在15秒后更改了一个标志,因此另一个线程停止了.有没有更优雅的方式来促进这一目标? #include结构MyClass{boost :: thread timeoutThread;boost :: thread workerThread; ..
发布时间:2021-04-15 20:54:14 其他开发

使用Boost线程和io_service创建线程池

我环顾了Stack Overflow,对此有一些非常好的答案,(我的代码实际上基于 io_service :: stop() 导致对 run()或 run_one()的所有调用尽快返回.它不会删除已排队到 io_service 中的任何未完成的处理程序.调用 io_service :: stop()时, threadpool 中的线程将尽快返回,从而使每个执行线程均完成. 为 io_serv ..
发布时间:2021-04-15 20:50:03 C/C++开发

为什么Boost库在实现线程屏障时会使用m_generation变量?

boost库(在C ++ 11标准之前)提供了对线程的支持.作为支持的一部分,它还提供了“屏障"的实现,这是一个允许同步的简单类.引用提升网站: “屏障是一个简单的概念.也称为集合点,它是多个线程之间的同步点.屏障针对特定数量的线程(n)配置,并且当线程到达屏障时,它们必须等待直到所有n个线程都到达了.第n个线程到达屏障后,所有等待的线程都可以继续执行,并且屏障被重置." 从Boost ..
发布时间:2021-04-15 20:49:57 C/C++开发

重置线程的睡眠时间

假设有一个这样的线程 void mythread(){诠释资源;while(1){{boost :: lock_guard锁(mylock);res = do_my_stuff();}boost :: this_thread :: sleep(boost :: posix_time :: seconds(5));}} 并且该线程当前正在休眠.如果线程外发生 ..
发布时间:2021-04-15 20:47:50 C/C++开发