草庐IT

BOOST-ASIO

全部标签

c++ - 如果两个线程同时访问同一个 bool 变量会发生什么?

我有一个跨平台的C++程序,我在其中使用boost库创建一个异步计时器。我有一个全局变量:boolreceivedInput=false;一个线程等待并处理输入stringargStr;while(1){getline(cin,argStr);processArguments(argStr);receivedInput=true;}另一个线程运行一个计时器,每10秒调用一次回调。在该回调中,我检查是否收到消息if(receivedInput){//setuptimertofireagainin10secondsreceivedInput=false;}elseexit(1);这样安全吗

c++ - 如何使用对对象的引用来初始化 boost::any?

我想在boost::any中存储对对象的引用目的。如何初始化boost::any对象?我试过std::ref(),但是boost::any使用std::reference_wrapper初始化.比如下面的#include#include#includeintmain(void){ints;inti=0;boost::anyx(std::ref(i));std::cout打印std::reference_wrapper我想要boost::any包含int&相反。 最佳答案 boost::any类没有允许这样的接口(interface)

c++ - Boost tokenizer 将引用的字符串视为一个标记

有没有办法让Boost分词器在不拆分引用部分的情况下拆分字符串下方?strings="1st2nd\"3rdwithsomecomment\"4th";Exptectedoutput:1st2nd3rdwithsomecomment4th 最佳答案 您可以使用分词器库中的escaped_list_separator。参见thisquestion有关如何将其应用于您的问题的更多详细信息。 关于c++-Boosttokenizer将引用的字符串视为一个标记,我们在StackOverflow上

c++ - 如何使用 Boost Program Options 提取已解析选项的序列?

我正在使用BoostGraph和ProgramOptions构建一个图形生成器。例如,有两种类型的组件C和W,每个都有1个源、1个汇和一些附加参数来指定它们之间的拓扑。我希望能够按照命令行参数的顺序将它们拼接在一起。例如:./bin/make_graph-c4,5,1-w3,3-c3,1,2应该创建一个类似如下的图表:C--W--C但是:./bin/make_graph-c4,5,1-c3,1,2-w3,3应该创建一个类似如下的图表:C--C--W使用boost::program_options,我无法确定如何提取确切的顺序,因为它将相同string_key的选项“组合”到value_

c++ - 执行 identity boost::lexical_cast 有什么开销?

给定一个函数,例如:templatevoidfunction1(constT&t){function2(boost::lexical_cast(t));}如果传递给function1的类型已经是std::string,会产生什么样的开销?开销是否会根据我要lexical_cast-ing的类型而有所不同?做一个重载函数来绕过强制转换是多余的吗?例如:voidfunction1(conststd::string&t){function2(t);}templatevoidfunction1(constT&t){function1(boost::lexical_cast(t));}boost

c++ - boost 不可复制的怪异性

我有一个继承自boost::noncopyable的类;比如说,标题摘录如下:classA:boost::noncopyable{...blah...private:structimpl;boost::scoped_ptrm_impl;};然后在我的解决方案的一个项目中,我有一个类(它也恰好继承自boost::noncopyable),它的私有(private)成员在实现细节中是对A类型的对象,例如,在header摘录中:classB:boost::noncopyable{...blah...private:structimpl;boost::scoped_ptrm_impl;};在执

c++ - boost::posix_time::microsec_clock CPU 密集吗?

我想使用Boost获取毫秒精度的时间。(精度不需要毫秒,接近即可。)引用Localtimewithmilliseconds,等,说明应该使用微秒时钟:boost::posix_time::microsec_clock::local_time();根据我的经验,使用标准的、低影响的系统调用(即Windows上的::GetTicks())不可能获得精确到微秒的时间(假设具有类似的精度)).相反,需要发出CPU密集型调用以boost超过毫秒(进入微秒)的精度。正如我提到的,我不需要微秒级的精度-只需稍微接近毫秒级的精度即可。然而,Boost.Date_Time不提供任何“millisec_c

c++ - boost 随机和 OpenMP

我从代码的OpenMP并行部分收到“总线错误”。我在下面重新创建了一个简单版本的问题。该代码实质上对函数uniform_distribution进行了多次调用。,它使用Boost的uniform_int_distribution绘制一个0到20000之间的整数。这post警告两个线程访问同一个对象。我猜那是eng就我而言。(不幸的是,我不知道如何编写“合适的互斥包装器”,正如该帖子所建议的那样)。我想到的一个可能的肮脏解决方案是创建一个本地eng在#pragmafor里面循环并将其作为参数传递给uniform_distribution.我不喜欢这个想法,因为在我的真实代码中,我调用了很

c++ - 两次读取 UDP 套接字会丢弃第一次调用后剩余的字节

我的目标是分两步从UDP套接字读取数据。问题是如果我向套接字写入的数据多于第一步读取的数据。结果是剩余数据消失。我将我的代码缩减为以下片段:#includeusingnamespaceboost::asio;intmain(){io_servicenet_io;ip::udp::socketnet_sock(net_io,ip::udp::endpoint(ip::udp::v4(),1234));uint8_tdata[2];net_sock.receive(buffer(data,2));std::cout当我向套接字写入数据时如下:echo'0123456789'|nc-uloc

c++ - Boost 进程间分配器 - 管理文件大小

首先,我将概述带有源的域。namespacebip=boost::interprocess;typedefbip::allocatorallocator;typedefbip::vectorvector;bip::managed_mapped_filem_file(open_or_create,"./file",constant_value);bip::allocatoralloc(m_file.get_segment_manager());bip::vector*vec=m_file.find_or_construct("vector")(alloc);我不关心底层文件的最终大小,但