首先,
本文提到的代码的github地址为:
之前,多线程一些基本的东西,包括线程创建,互斥锁,信号量,我们都已经封装,下面来看看消息队列
我们尽量少用系统自带的消息队列(比如Linux的sys/msgqueue),那样移植性不是很强,我们希望的消息队列,在消息打包和提取都是用的标准的C++数据结构,当然,你也可以用链表或者是FIFO,那样得先写个链表或者FIFO出来。
我比较懒,直接用的C++的STL的deque,即双端口队列,这样可靠性有保证,当然,速度可能没有自己写的链表快,但是没关系,使用双端口队列还可以根据你自己的需要将数据插入到队列头或者队列尾,这样在消息有优先级的情况下还是有用的。
消息队列的核心作用其实很简单,一个或多个线程往一个队列后面堆数据,另外的一个线程从队列前面取数据处理,基本操作也只有两个,一个发,一个收,所以,我们定义消息队列基类为:
class CMsgQueue
{
public:
CMsgQueue(const char *pName=NULL);
~CMsgQueue();
//revice data from message queue
virtual bool recvMsg(unsigned int &m_msg_code,void *&p_msg)=0;
//send data to messag

本文介绍了一个C++多线程框架中实现的消息队列,使用STL的deque作为基础,结合互斥锁和信号量确保线程安全。作者提供了消息队列的基类CMsgQueue和Linux平台的具体实现CLinuxMsgQueue,通过COperatingSystemFactory工厂类创建实例。在接收和发送消息时,利用信号量进行阻塞和唤醒,确保消息的正确传递。文章提供了一个简单的多线程框架示例,并鼓励读者在github上查看完整代码并参与完善。
最低0.47元/天 解锁文章
2201

被折叠的 条评论
为什么被折叠?



