boost相关内容

如何使用 Boost 制作关键部分?

对于我的跨平台应用程序,我已经开始使用 Boost,但我无法理解如何实现代码来重现 Win32 的关键部分或 .Net 的 lock 的行为. 我想写一个方法Foo,可以从不同的线程调用来控制对共享字段的写操作.应该允许同一线程内的递归调用(Foo() -> Foo()). 在 C# 中这个实现非常简单: object _synch = new object();无效的富(){loc ..

如何获得废弃的 boost::interprocess::interprocess_mutex 的所有权?

我的场景:一台服务器和一些客户端(虽然不多).服务器一次只能响应一个客户端,因此必须排队.我正在使用互斥锁 (boost::interprocess::interprocess_mutex) 来执行此操作,并包裹在 boost::interprocess::scoped_lock 中. 问题是,如果一个客户端在持有互斥锁时意外死亡(即没有析构函数运行),其他客户端就会遇到麻烦,因为它们正在等 ..
发布时间:2022-01-22 19:56:06 C/C++开发

boost 是否有使用 ntohl/htonl/ntohs/htons 类型函数的便携方式?

如果有帮助,我正在使用 UDP,特别是 boost::asio::ip::udp::socket 套接字? 什么是头文件? 在 boost 下使用 UDP 处理网络字节排序需要哪些标头/类? 解决方案 刚刚发现 #include 就足够了,因为这会引入所有平台相关的标头和提供对 htonl/ntohl 的访问权限,这正是我所需要的. 感谢 ..
发布时间:2022-01-22 17:21:51 C/C++开发

在 unix 上提升 UDP 套接字问题 - 绑定:地址已在使用中

首先,我知道同一主题还有其他几个主题,但我无法在其中找到任何可以帮助我的内容,因此我将尝试非常具体地说明我的情况. 我设置了一个简单的 UDP 客户端/UDP 服务器对,负责在多个并行模拟之间发送数据.也就是说,模拟器的每个实例都在单独的线程中运行,并在 UDP 套接字上发送数据.在主线程中,服务器正在运行并在模拟之间路由消息. (对于这个问题)服务器代码的重要部分如下所示: UDP ..
发布时间:2022-01-22 17:21:01 服务器开发

Rust 不接收来自 C++ 的 UDP 消息

我正在使用 UDP 创建服务器/客户端范例,但 Rust 服务器没有接收 C++ 客户端消息.我已经能够成功地进行 Rust 服务器/Rust 客户端和 C++ 服务器/Rust 客户端通信. 这让我相信我的 C++ 代码存在问题,或者在将 C++ 缓冲区发送到 Rust 时存在某种类型的错误通信,但我使用了我认为有效的代码.这只是从同一台计算机发送和发送到同一台计算机,尚未扩展到计算机到计 ..
发布时间:2022-01-22 17:00:48 C/C++开发

使用 boost::asio 监听 UDP 端口失败

我有一个服务器,它收集信息并通过本地网络广播一些消息.我正在使用 boost::asio 在端口 8079 上通过 UDP 广播这些数据包,我可以使用 WireShark 验证这些数据包实际上是按预期广播的. 现在,很自然地,我想跟进一个可以对这些消息做出反应的听众,但我很难收到任何东西.我目前的做法是: boost::asio::io_service io_service;boost:: ..
发布时间:2022-01-22 16:55:26 C/C++开发

混合 C++ 和 Objective-C

我使用 C++ 作为应用主干,使用 Objective-C 作为 GUI,这很好. 但是在将这些代码混合到 Objective-C++(.mm 文件)中时,我有几个问题: 1.我可以将 STL 容器与 Objective-C 或 Cocos2D 对象混合使用吗? 例如在 Objective-C 标头中,我可以执行以下操作吗? #include #include ..
发布时间:2022-01-21 17:26:43 移动开发

对于生产者和多个消费者来说,std::queue 线程是安全的

如何使队列线程安全?我需要推/弹出/前/后并清除.boost中是否有类似的东西? 我有一个生产者和一个或多个消费者. 解决方案 您必须保护对 std::queue 的访问.如果你使用 boost 保护它使用 boost::mutex.现在,如果您有多个阅读器和一个编写器线程,请查看 boost::shared_lock(用于阅读器)和 boost::unique_lock(用于编写器 ..
发布时间:2022-01-21 11:58:03 C/C++开发

boost named_condition 没有唤醒等待进程

我有 2 个进程(生产者和消费者)在共享内存中共享一个 int 双端队列,我让生产者进程在双端队列中放入 2 个数字,然后它进入等待状态,失去互斥锁.然后我让消费者​​进程删除数字并打印它们.然后它会根据生产者正在等待的条件发出通知.然后消费者在第二个条件下自行等待.在这种情况下,生产者不会醒来.我在进程之间使用相同的互斥锁.请在下面找到所有代码. 包含文件 shared_memory.h: ..

映射复杂的查找操作

我想做以下事情: 在字符串和任何类型的对象(可以是列表、整数 - 任何东西)之间定义映射. 地图的键可以如下(同样,这些值并不重要): “AAA/123"==> 1 “AAA/"==> 2 “BBB/" ==> 3 "CCC/*" ==> 4 “CCC/123"==> 5 现在,诀窍是我想在给定以下字符串的情况下找到正确的值: “AAA/123"应该给 1. “AAA/111" ..
发布时间:2022-01-20 17:31:25 C/C++开发

boost是否提供make_zip_range?

在 this answer 上,有一条评论建议使用一个有用的 C++ 构造,类似于 make_zip_iterator,但对于范围:它需要一个范围元组并生成一个新范围 - 其 begin() 和 end() 迭代器是适当的 zip 迭代器. 现在,这应该不太难实现,但我想知道 - Boost 不是已经以某种方式提供了吗? 解决方案 Boost.Range 提供 combine() 函 ..
发布时间:2022-01-20 08:21:03 C/C++开发

boost::asio - 窥视套接字缓冲区

我使用 boost::asio::read (或者可能是等效的 async_read) 从套接字读取一些数据. 是否可以将读取的字节保留在底层套接字中,以便下次在套接字上调用 read 时再次收到该数据? 解决方案 就像 Simon 说的,你不能用 boost::asio::read() (或 boost::asio::async_read()).但是,对于 read() 您可以在套 ..
发布时间:2022-01-19 16:26:04 C/C++开发

Boost.Asio 套接字析构函数关闭连接?

boost::asio::ip::tcp::socket 的析构函数究竟做了什么?即使在搜索 Boost 文档和源代码之后,我也无法判断是否需要使用 socket->shutdown(boost::asio::ip::tcp::socket::shutdown_both);套接字->关闭(); 打电话之前 删除套接字; 我需要手动关闭套接字,还是由析构函数处理? 解决方案 当一个s ..
发布时间:2022-01-19 16:22:18 C/C++开发

如何从本机套接字创建 Boost.Asio 套接字?

我只是想从现有的本机套接字创建一个 boost ip::tcp::socket.在 assign 函数中,第一个参数必须是“protocol_type",第二个参数必须是“native_type",但它从不解释它们是什么或给出其使用示例. 我猜第二个应该是套接字描述符,但我非常感谢澄清. void SendData (int socket, std::string message){boo ..
发布时间:2022-01-19 16:12:03 C/C++开发