草庐IT

boost_thread

全部标签

c++ - 如何为 Boost.Asio 设计自定义 IO 对象

我有一个代表嵌入式设备的基类(DeviceBase),我想与之通信。该设备可以通过多种方式访问​​,包括USB和TCP套接字。此外,还有一个适用于文件的模拟实现。到现在为止,我只使用了同步读/写调用,所有的实现都只是从基类派生的类,覆盖了读/写函数。这使我能够使用多态指针和容器为应用程序逻辑提供对设备的独立于实现的访问。现在我想使用Boost.Asio来启用简单的异步IO。我找到了这个指南http://www.highscore.de/cpp/boost/asio.html描述了如何编写您自己的扩展,但它非常简单,而且我偶然发现了一些在那里没有讨论的问题。目前,我所有的实现都有不同的构

c++ - boost::wait 和 boost::condition 是否必须共享相同的互斥对象

boost::condition_variablecond;boost::mutexmutex;//thread#1for(;;){D*d=nullptr;while(cb.pop(d))//cbisacircularbufferandmanageisownmutex/lockinternally{//...dosomethingwithd}boost::unique_locklock(mutex);cond.wait(mutex);}//thread#2while(1){getchar();for(inti=0;i我想知道如果我的数据容器有自己的锁来避免数据竞争是否可以,另一方面bo

c++ - boost::lexical_cast<std::string>(Int_Type) 可以抛出吗?

有没有可能boost::lexical_cast(Int_Type)扔?我唯一能想到的是字符串没有内存的地方,但是还有其他更合理的选择吗? 最佳答案 根据documentation,lexical_cast可以扔bad_lexical_cast.最重要的是,正如您已经提到的,可能存在动态分配,它总是会导致bad_alloc异常。编辑:至于具体情况lexical_cast,除了分配错误之外,链上的任何部分似乎都不太可能失败,但文档并不(据我所知)保证不会出现“错误转换”异常。 关于c++-

c++ - 使用带有 boost::bimap 的自定义分配器

我正在努力boost同时使用Boost图形库和boost::bimap的程序的性能。分析显示大部分时间都花在了内存分配和释放上。使图形库的adjacency_list类使用boost::fast_pool_allocator显着boost了性能。剩余内存分配的很大一部分发生在boost::bimap中,因此我也想尝试在那里使用自定义分配器。documentation说您可以将分配器指定为bimap的最后一个模板参数,但它没有说明分配器本身的模板参数应该是什么类型。例如,对于类型X和Y,在boost::bimap,set_of,boost::fast_pool_allocator>Z应该

GCC 中的 C++11 thread_pool、futures、promises 支持

是N2276中的任何一个gcc支持吗?我目前使用的是4.6.1,其中std::thread似乎工作正常。如果不是,我应该使用boost'sthreadpool?什么是可以轻松过渡到最终futures、promises和thread_pool的良好替代方案/权宜之计?也许this有用吗?N2276似乎没有列出here.我想知道N2276的任何特性是否会被纳入-我想我读到了有关futures和promises以及其他进入C++11的范例:将不得不谷歌看看周围发生了什么。 最佳答案 gccC++librarystatuspage显示其中大

c++ - Boost.Python 静态方法重载

如何使用Boost.Python公开以下类?classC{public:staticvoidF(int){}staticvoidF(double){}};我试过这样的:bp::class_("C").def("F",(void(C::*)(int))&C::F).staticmethod("F").def("F",(void(C::*)(double))&C::F).staticmethod("F");但是,它在Python中引发了一个异常(SystemError:libdistributions的初始化引发了未报告的异常)。如果我从bp::class_中删除其中一个重载,则一切正常。

c++ - 关于 boost::ublas 中的逐个元素操作

我发现boost::ublas对逐元素操作和顺序操作的支持不是很好(但是效率还是蛮高的:))我正在努力D=A^2.*B^3.*C其中A、B、C均为大小相同的方阵,运算符“.*”表示逐元素运算,^为矩阵的幂。使用boost:ublas,我写了for(intn=0;n在我的程序中,我有许多如上所示的后续操作,无论如何我可以获得相同的结果但使用一行代码而不是循环?此外,我观察到将常量分配给矩阵或vector的所有元素似乎无效boost::numeric::ublas::vectorv(100);v=0.2;相反,我必须使用循环再次进行赋值,有没有更好的方法来节省一些代码?我的算法真的很长,有

c++ - 将嵌套的 C 循环转换为单个 boost 索引?

我正在慢慢学习boost,我正在尝试找到一种简单的方法来转换以下C++代码段:for(inti=-n;i进入一个我可以循环的迭代器。在我的母语python中(我可以这么调用它吗?),这是一个使用itertools的单行代码:itrtools.product(range(-n,n+1),repeat=3)完整的答案将提供一个最小的工作示例和文档链接,以便我可以使用RTFM。 最佳答案 有BOOST_PP_SEQ_FOR_EACH_PRODUCT在Boost.Preprocessor可以在预处理步骤中执行此操作。TheBOOST_PP_

c++ - boost::asio 错误?销毁io_service之前的task_io_service

我在我的代码中发现了这个奇怪的错误。这是我设法完成的自包含测试用例。#include#include#include#include#includeusingboost::asio::io_service;usingstd::placeholders::_1;classasync_service{public:async_service();async_service(size_tnumber_threads);~async_service();async_service(constasync_service&)=delete;voidoperator=(constasync_serv

c++ - 未解析的外部符号 boost::chrono::system_clock::now(void)

谷歌一直不友善...我最近取消了boost1.50,并尝试使用它来构建我的项目。这是一个大型项目,使用了多种boost功能(线程、信号、指针类、spirit等)。一些细节:-MSVC9.0(2008)-静态链接boost我在链接每个生成的exe时遇到错误,但是对于chrono,我没有直接链接它。错误是:libboost_thread-vc90-mt-sgd-1_50.lib(thread.obj):errorLNK2019:unresolvedexternalsymbol"public:staticclassboost::chrono::time_point>>__cdeclboost