- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是一个经典的 Boost message_queue 示例:
#include <boost/interprocess/ipc/message_queue.hpp>
using namespace boost::interprocess;
struct Data { ... };
int main() {
Data data1;
message_queue::remove("message_queue");
message_queue mq(create_only, "message_queue", 100, sizeof(Data));
mq.send(&data1, sizeof(Data), 0);
}
现在我想将 mq
message_queue 对象作为成员变量放入类中,并具有此类对象的生命周期:
#include <boost/interprocess/ipc/message_queue.hpp>
using namespace boost::interprocess;
struct Data { ... };
class DataManager
{
message_queue mq;
public:
DataManager()
: mq(create_only, "message_queue", 100, sizeof(Data)) // ok
{
mq.Open(create_only, "message_queue", 100, sizeof(Data)); // Open does not exist
}
};
看来我只能在成员初始化列表中初始化mq
对象,因为message_queue
不提供成员函数来稍后设置它的参数。
我错了吗?还有其他方法吗?
我希望能够,例如,让一个对象使用一个消息队列,其名称作为参数传递给它的一个成员函数。
谢谢。
最佳答案
这个怎么样:
class QueueManager
{
boost::scoped_ptr<message_queue> mq;
// ctor
QueueManager(string msgqname)
{
mq.reset(new message_queue(create_only, msgqname, 100, sizeof(Data));
}
};
只是让您知道至少可以将一些参数传递给类构造函数。由于消息队列底层使用的是共享内存,我想大部分参数在构建之后是不能改变的。
关于c++ - Boost message_queue : just the constructor lets me configure it, 无其他成员函数可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7567034/
大家好, 我目前正在尝试找出一种在 64 位进程和 32 位进程之间传递数据的方法。由于它是一个实时应用程序并且两者都在同一台计算机上运行,因此我很难使用共享内存 (shm)。 当我在寻找一些使用
当我创建一个 boost 消息队列时,在构造函数中我传递了名称: using boost::interprocess; //Create a message_queue. message_queue
任何人都可以分享一起使用 boost message_queue 和序列化的小工作示例吗?我想使用类在进程之间交换数据,但停留在我的研究中。 最佳答案 您应该能够解决这个问题。首先尝试(使用文档)使消
我想做的是让应用程序 A 向应用程序 B 发送一个指向 A 已在共享内存上分配的对象的指针(使用 boost::interprocess )。对于该指针传输,我打算使用boost::interproc
boost::interprocess::message_queue 机制似乎主要是为进程间通信而设计的。 问题在于它序列化消息中的对象: “消息队列只是在进程之间复制原始字节,并不发送对象。” 这使
我们正在替换消息队列的内部实现(由于整体设计的限制),我想使用 boost::interprocess::message_queue 作为几乎是直接更换。 但是,我们有一个特定的要求,即在消息队列“已
我正在使用 boost 进程间和 ptree 结构进行一些测试,当我尝试读取发送的消息时(或当我尝试在 json 中解析它时)出现段错误。 我在 debian linux 上使用 boost1.49。
当我使用 Boost 1.53.0 时,我是这样使用发送和接收的: int i=0; msg_queue.send(&i, sizeof(i), 0); int number; unsigned in
我需要创建一个基于事件的多线程应用程序,为此我尝试使用 boost::thread 和 boost/interprocess/ipc/message_queue 在线程之间发送消息。我目前正在做的是让
我实际上正在尝试使用 boost::serialize 序列化一个 boost::function,因为我想在 boost::interprocess::message_queue 中共享它。我只看到
我通过以下方式创建了一个 boost::message_queue: namespace bipc = boost::interprocess; ... try { bipc::message
我正在使用 boost::interprocess::message_queue 并按照上给出的定义 http://www.boost.org/doc/libs/1_35_0/doc/html/boo
我需要一个超快的 MQ 机制,发送方和接收方都用 C++ 编写,在 Windows 平台上。 我当前使用 RCF-C++ 的实现因为 IPC 在 Windows 命名管道上的时钟速度约为 20,000
有谁知道 GLib 的 GAsyncQueue 与 POSIX message_queue 在线程间通信方面的相对性能吗?我将有许多小消息(单向和请求响应类型),将在 Linux 之上用 C 实现(目
我正在从中等完整性进程创建一个 boost::interprocess::message_queue,如下所示: permissions p; p.set_unrestricted(); messag
我正在尝试使用 boost.interprocess 和 message_queue 在两个进程之间实现消息传递系统。 第一个问题:一个队列只能用于进程A向B发送消息,不能用于B向A发送消息。 因此,
该程序在我的 friend 系统中正确编译和运行,但是当我尝试在我的系统上执行时,它在以下行显示上述错误。 message_queue::size_type recvd_size; I am also
编辑 也试过 boost 1.75 我正在学习如何使用 boost::interprocess 消息队列, 我正在使用文档 here 中的示例 有一个不同 - 对于我正在使用的另一个过程 fork()
我正在使用 boost::interprocess::message_queue 在我的两个进程之间进行进程间通信。 这是我第一次使用它,所以我不清楚这个异常,因为我找不到任何关于它的文档。 我的类(
这是一个经典的 Boost message_queue 示例: #include using namespace boost::interprocess; struct Data { ... };
我是一名优秀的程序员,十分优秀!