草庐IT

ZN5boost

全部标签

c++ - 使用或不使用 boost::bind() 创建一个 boost::thread

有些人似乎使用boost::bind()函数启动boost::threads,例如在以下问题的公认答案中:Usingboostthreadandanon-staticclassfunction而其他人根本不使用它,例如在这个问题中获得最多赞成票的答案:BestwaytostartathreadasamemberofaC++class?那么,如果存在差异,那有什么区别呢? 最佳答案 从下面编译并给出预期输出的代码可以看出,boost::bind对于将boost::thread与自由函数、成员函数和静态成员函数一起使用是完全不必要的:#

c++ - 为什么 Boost MPL 有整数常数?

既然您可以将整数值作为模板参数并对它们执行算术运算,那么boost::mpl::int_和其他整数常量背后的动机是什么?这种动机是否仍然适用于C++11? 最佳答案 您可以将整数值作为模板参数,但您不能在一个模板中同时使用类型和非类型模板参数。长话短说,将非类型模板参数视为类型允许它们与MPL中的无数事物一起使用。例如,考虑一个元函数find它与类型一起使用并在序列中寻找相同的类型。如果您希望将它与非类型模板参数一起使用,您需要重新实现新算法“重载”,find_c为此,您必须手动指定整数值的类型。现在假设您希望它像其他语言一样使用混

c++ - boost C++ 无锁队列与共享队列

我是多线程编程的新手,我只知道最常见的Producer-Consumer-Queue。我正在使用boostc++库,我不知道是使用boost::lockfree::queue还是使用`mutex`和`condition_variable`的std::queue周围的包装类更好。哪里使用无锁数据结构更好,哪里使用基于`mutex`和`condition_variables`的简单实现更好? 最佳答案 在您的应用中尝试两者,看看哪个表现最好。通常,轮询无锁队列在队列几乎总是有条目时效果最好,而阻塞队列在队列几乎总是空的时候效果最好。由于

c++ - 为什么人们似乎暗示我宁愿不使用 Boost?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion我经常在这里看到关于boost的注释,例如IfyouarefinewithusingBoost...或IfyoucanuseBoost...我想知道,这到底是怎么回事?我应该厌倦什么?我什么时候不能使用boost?不用boost的原因有哪些?在我看来,boost是对STL的一个很好的扩展;有时非常重量级和笨拙,但仍然很棒。我并不是真的征求有关boost的意见。我宁愿寻找一些具体的例子,在使

c++ - 如何停止/中断 boost::thread?

我在一个函数中创建了一个线程,在另一个函数中,我想停止这个线程。我试过这样:classServer{private:boost::thread*mPtrThread;...public:voidcreateNewThread(){boost::threadt(...);mPtrThread=&t;}voidstopThread(){mPtrThread->interrupt();}}但它不起作用。我怎样才能停止线程? 最佳答案 如果你想使用interrupt()你应该定义interruptionpoints.线程一旦到达中断点之一,

C++11 std::shared_ptr + boost::序列化

这个问题在这里已经有了答案:Howcanboost::serializationbeusedwithstd::shared_ptrfromC++11?(7个答案)boostserializeandstd::shared_ptr(2个答案)关闭9年前。嗨,有人已经成功地使用boost::serialization序列化了C++11std::shared_ptr。那里有很多过时的帖子,但没有一个具有可接受的解决方案。我不打算讨论为什么我要使用std::shared_ptr只是接受它!我找到了另一个帖子:boostserializeandstd::shared_ptr但它没有回答我如何序列化

c++ - 为什么 Boost.ProgramOptions 不是只有标题?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion有些boost库是只有头文件的,有些不是,出于各种原因等等。Boost.ProgramOptions不是header-only是否有特定原因/设计决定?我想知道,因为它在其文档中声称是一个“小型”库,而且我没有看到任何与系统相关的原因(如线程或asio)。

c++ - Boost.Test 测试静态库

我正在使用Boost.Test进行单元测试。因为一些原因,我想在不同的静态库上编写单元测试用例。问题是当我这样做时,自动注册器不工作。例如,如果我有类似的东西://foo_tests.cpp#defineBOOST_TEST_MODULE"Foo"#includeBOOST_AUTO_TEST_CASE(Bar){BOOST_CHECK(false);}//usedtogeneratelibFooTests.a//main.cpp#defineBOOST_TEST_DYN_LINK#defineBOOST_TEST_MAIN#include//usedtogeneratemain.o然

c++ - Boost::asio、共享内存和进程间通信

我有一个应用程序专门使用boost::asio作为输入数据源,因为我们的大多数对象都是基于网络通信的。由于某些特定要求,我们现在还需要能够使用共享内存作为输入法。我已经编写了共享内存组件,它运行得相当好。问题是如何处理从共享内存进程到消费应用程序的数据可以读取的通知——我们需要处理现有输入线程中的数据(使用boost::asio),我们还需要不阻塞等待数据的输入线程。我通过引入一个中间线程来实现这一点,该线程等待共享内存提供程序进程发出的事件信号,然后将完成处理程序发布到输入线程以处理数据读取。这现在也可以工作,但是中间线程的引入意味着在大量情况下,我们在读取数据之前有一个额外的上下文

c++ - Boost.Filesystem 中的 MAX_PATH 限制

我想使用Boost.Filesystem库来操作路径、文件和目录。我的问题是是否支持长于MAX_PATH的路径?我知道在Win32API中我们有解决方法“\\?\”,但它不受PathAppend和PathCombine等基本函数的支持。所以我正在寻找有关MAX_PATH和Boost.FS的任何有用信息。谢谢UPD:我关心所有操作,如路径追加、路径合并等(我在Win32API中有这些函数,但它们不适用于比MAX_PATH长的路径)例如CreateFileW和DeleteFileW都支持比MAX_PATH长的路径。可能Boost.FS可以替代Win32API实用程序函数,例如shlwapi