草庐IT

boost_thread

全部标签

c++ - 有人可以帮我使用 Boost::MPL 创建一个变量容器吗?

我创建了一个物理系统来处理任何碰撞对象到任何碰撞对象,如下所示:namespaceCollision{templateinlinevoidCheck(T&t,U&u){if(u.CheckCollision(t.GetCollider())){u.HitBy(t);t.Hit(u);}}}还有其他几个helperobjects使其易于使用,但要点是有动态对象需要针对静态对象和其他动态对象进行测试,但静态对象不需要检查。我想要的是这样的:voidfunc(){PhysicsWorldworld;shared_ptrballPhysics(newCSphere(0,0,ballSprite

c++ - 通过 boost::python 将 C++ 对象传递给 python 函数

我想在C++应用程序中使用嵌入的Python并调用Python脚本中定义的函数。该函数的参数是一个C++对象。查看我的代码:classTest{public:voidf(){std::cout(newTest()));//compileerrorfoo(pyo);}return0;}python2.py:deffoo(o):o.f()如何将C++对象传递给foo?我知道swig可以做到这一点,但是boost::python? 最佳答案 已解决。classTest{public:voidf(){std::cout("Test").de

c++ - G++ 4.6 -std=gnu++0x : Static Local Variable Constructor Call Timing and Thread Safety

voida(){...}voidb(){...}structX{X(){b();}};voidf(){a();staticXx;...}假设在进入main之后,f被多个线程(可能竞争)多次调用。(当然,唯一对a和b的调用是上面看到的那些)以上代码在-std=gnu++0x模式下用gccg++4.6编译时:Q1。是否保证至少调用一次a()并在调用b()之前返回?也就是说,在第一次调用f()时,x的构造函数是否会同时调用一个自动持续时间局部变量(非静态)(而不是在全局静态初始化时间)?Q2。是否保证b()只会被调用一次?即使两个线程第一次同时在不同的核上执行f?如果是,GCC生成的代码通过

c++ - 你如何区分取消和重新触发的 boost deadline_timer

当您在运行的计时器上调用expires_from_now()时,定时器被取消,并调用一个新的定时器。因此调用关联的处理程序。在处理程序中很容易区分在已取消和已过期的计时器之间。然而,我想知道,是否有一种方法可以区分在过期和重新触发的计时器之间。在这两种情况下,处理程序都被调用带有错误代码operation_aborted。或者我可能遗漏了一些细节。下面的代码生成以下输出:2012041521:32:28079507Main:Timer1setto15s.2012041521:32:28079798Main:Timer1setto12s.2012041521:32:28079916Han

c++ - boost::asio::tcp::socket 关闭并取消而不调用处理程序

我正在用boost的asio库编写一个服务器。服务器使用一组连接对象(围绕boost::asio::tcp::socket的包装类)处理许多并发连接。在Connection类中,使用socket.async_read_some(...)不断读取套接字,每当使用新数据调用读取处理程序时,都会立即再次调用socket.async_read_some()以读取更多数据。现在,服务器可能会因为某种原因决定断开客户端连接,所以自然而然的做法是调用connection.close(),它又调用socket.close(),这将导致所有挂起的异步操作被取消。这导致读取处理程序(绑定(bind)到类C

c++ - Boost.Asio 解析器的结果不同

我有一个固定的复制器,每5秒在localhost上调用一次boost::asio::ip::tcp::resolver::resolve()。它计算返回的端点数,并将该值与上一次迭代进行比较。#include#includeintmain(intargc,char*argv[]){if(argcendpoint()示例session~>time./addrinfo_asiolocalhost80...127.0.0.1:80got1addresses[::1]:80127.0.0.1:80got2addressesaddrinfo_asio:addrinfo_asio.cc:35:in

c++ - 在 boost::variant 中调用类型通用的方法

如果我的boost::variant中的所有类型支持相同的方法,有没有办法通用地调用它(即不为static_visitor的每个方法单独调用它)?我正在尝试让这样的东西工作:classA{voidboo(){}};classB{voidboo(){}};classC{voidboo(){}};typedefboost::variantX;voidfoo(X&d){x.boo();}但编译失败说'boo':isnotamemberof'boost::variant'.目前,我有一些类都继承自一个接口(interface),因此可以多态地使用它们的单一共享方法。我还希望能够通过访问者使用这

c++ - boost::asio 异步条件

想法是能够在消费者/生产者问题上用boost::asio和线程池替换多线程代码。目前,每个消费者线程都在等待boost::condition_variable-当生产者向队列中添加内容时,它会调用notify_one/notify_all进行通知所有的消费者。现在,当您(可能)拥有1k+消费者时会发生什么?线程不会扩展!我决定使用boost::asio,但后来发现它没有条件变量。然后async_condition_variable诞生了:classasync_condition_variable{private:boost::asio::io_service&service_;type

c++ - 为什么 C++ Boost 发行版有 `.dll` 和 `.lib` 文件?

大家好。我目前正在创建一个“共享”库(在Windows上也称为DLL),该库又将依赖“BoostC++”库来提供日期时间功能。我注意到我的Boost安装(通过Boostpro完成)在boost安装的lib目录中有一些DLL和LIB文件。好的,我认为这是必需的,所以我将它们添加到我的IDE中的库依赖项中。现在我要做的是编写使用boost日期时间库的代码,创建共享库并从独立的可执行文件中使用它。它有效,即使我刚刚将我创建的共享库复制到可执行文件夹而不是boost_date_time-vc100-mt-1_47.dll文件。奇怪的。现在我要做的是从我的项目中删除Boost的DLL/库依赖项并

C++11(或 Boost)system_error 策略

我正在开发一个系统,该系统旨在使用名为error_code、error_condition和error_category的类——一个新的方案std:在C++11中,尽管目前我实际上正在使用Boost实现。我读过ChrisKholkoff的seriesofarticles,现在三遍了,我想我了解了如何创建这些类。我的问题是这个系统需要处理存在于单个DLL中的插件,而插件可能会出错。我最初的设计是计划一个特定于系统的错误类别,该类别将包含所有各种错误代码和未真正映射到errno值的特定错误条件的候选列表。这里的问题是,要使DLL能够使用这些错误代码之一,它需要访问应用程序中error_ca