Linux多线程开发(三):使用C++封装线程消息通信

正所谓“师夷长技已治夷”,在我们使用C++来封装Linux下的多线程消息通信前,最好先学一下Windows中多线程是如何进行通信的。

Windows系统会为每个线程配备一个消息队列【Tips1】,其他线程others可以通过调用postThreadMessages函数,向线程拥有者owner发送消息;而Owner可以调用GetMessage 函数从消息队列中获取消息

Tips1:我刚开始学的时候,以为这个消息队列是封装到线程类内部的,实际上不是,是类外部的一个队列然后使用指针和线程关联起来的,这样做,别的线程才能方便的操作该队列,从而完成消息的发送


一、消息的封装

在建立线程之间的消息通信机制前,先来封装下消息;显然,一套系统中会有多个消息,且不同消息中的内容也不尽相同。换句话说,这对程序库而言就是变化点,所以我们要为所有的消息建立一个继承体系,先搞个基类出来:

class CMessage
{
	protected:
	
	unsigned long m_lMsgID;   // 所有的消息都有一个用来标识自己的独一无二的ID号

	public:

	const unsigned long & m_clMsgID;

	public:

	CMessage(unsigned long lMsgID);
	virtual ~CMessage();

	CMessage(const CMessage & cm);
	CMessage & operator=(const CMessage & cm);
};


你可能感兴趣的:(Linux多线程开发(三):使用C++封装线程消息通信)