【多线程】C++自实现适用于多线程的原子消息队列

这篇博客记录了作者3年前实现的适用于多线程的原子消息队列,避免了传统队列在多线程环境中需要手动加锁的问题,减少了死锁的风险。通过引入原子操作,队列的互斥访问得到了保证,简化了多线程编程中的同步问题。
摘要由CSDN通过智能技术生成

这些是3年前都自实现的,现在记录起来,以防忘记丢失,以便后续查阅使用。

代码:

     xinclude.h文件:

#ifndef _XINCLUDE_H_
#define _XINCLUDE_H_

//include
#include <stdio.h>
#include <stdlib.h>  
#include <unistd.h>
#include <netinet/in.h>  
#include <sys/socket.h>  
#include <sys/types.h> 
#include <arpa/inet.h>
#include <pthread.h>
#include <errno.h> //errno
#include <time.h>

//include linux c
#include <signal.h> //SIG_ERR signal

//include c includer
#include <string.h> //strerror

//include c++ includer
#include <string>	//std::string
#include <sstream>	//std::stringstream
#include <iostream>
#include <set>
#include <list>
#include <map>
#include <queue>
#include <vector>	//std::vector

//using namespace
using namespace std;

//define
#define MAX_ROUND_VALUE 65530
#define MAX_RCV_SIZE 2000
#define MAX_SND_SIZE 2000

//message struct
typedef struct message_st
{
	void* 	m_pcBuf;//message buf
	int	m_iLen;  	//message length
	int m_iSize; 	//buf capacity size
        	
	message_st()
	{
		m_pcBuf = NULL;
		m_iLen	= 0;
		m_iSize = 0;
	}

	//message is valid
	inline bool IsValid()
	{
	    return (m_pcBuf != NULL) && (m_iLen > 0);
	}

	//allocate memory for message
	inline bool Malloc(int iSize)
	{
	    bool bRet = false;
		if (true =&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值