C++消息队列实现

C

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
消息队列是一种常用的进程间通信方式,它允许不同的进程之间通过发送和接收消息来进行通信。下面是一个简单的C++消息队列实现示例: ```c++ #include <iostream> #include <queue> #include <thread> #include <mutex> #include <condition_variable> template<typename T> class MessageQueue { public: void Send(T&& msg) { std::lock_guard<std::mutex> lock(mutex_); queue_.emplace(std::move(msg)); cv_.notify_one(); } T Receive() { std::unique_lock<std::mutex> lock(mutex_); cv_.wait(lock, [this]{ return !queue_.empty(); }); T msg = std::move(queue_.front()); queue_.pop(); return msg; } private: std::queue<T> queue_; std::mutex mutex_; std::condition_variable cv_; }; int main() { MessageQueue<std::string> message_queue; std::thread sender([&message_queue](){ message_queue.Send("Hello"); message_queue.Send("World"); }); std::thread receiver([&message_queue](){ std::cout << message_queue.Receive() << std::endl; std::cout << message_queue.Receive() << std::endl; }); sender.join(); receiver.join(); return 0; } ``` 在上述代码中,我们使用了模板类 `MessageQueue` 来实现消息队列。它包含两个主要的方法:`Send` 和 `Receive`。`Send` 方法用于向队列中添加消息,`Receive` 方法用于从队列中获取消息。这两个方法都使用了互斥锁和条件变量来保证线程安全。在主函数中,我们创建了两个线程,一个线程用于向消息队列中发送消息,另一个线程用于从消息队列中接收消息,并将其输出到标准输出流中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值