草庐IT

boost-coroutine

全部标签

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++ - 你如何区分取消和重新触发的 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

c++ - 为什么这个 boost::spirit::qi 规则与输入不匹配?

我试图继续处理我之前的示例并扩展规则。我的问题是,使用ID_IDENTIFIER的规则不起作用-虽然我知道词法分析器正在工作(使用单元测试)。例子如下:#include#includenamespaceqi=boost::spirit::qi;namespacelex=boost::spirit::lex;enumLexerIDs{ID_IDENTIFIER,ID_WHITESPACE,ID_INTEGER,ID_FLOAT,ID_PUNCTUATOR};templatestructcustom_lexer:lex::lexer{custom_lexer():identifier("[

c++ - 使用 boost::interprocess::file_lock 创建一个锁定文件

我想使用boost::interprocess::file_lock来确保进程P1写入目录x的文件>在完成之前不会被进程P2读取。为此,我想让P1在写入文件时使用boost::interprocess::file_lock锁定文件,然后在完成后解锁它们。然后P2可以跳过(并返回)任何被锁定的文件。我遇到的问题是boost::interprocess::file_lock似乎只允许您锁定存在的文件。但是,如果我先创建文件,然后将其锁定,则会出现竞争条件:P1创建文件P2注意到文件并开始读取它P1锁定文件P1写入一些数据P2读取一些数据,到达最后,最后只有P1的部分输出。所以我想做的是创建