linux扑克游戏,linux下多线程扑克游戏框架.pdf

linux 下多线程扑克游戏框架

#define PLAYERCOUNT 4#define

PLAYED_CARDS_NO 4#define PLAYING_WAITING

10#define BUFFER_RECV 128

#ifdef DEBUG #define DPRINTF(s) printf s#else #define

DPRINTF(s)#endif#define ERR_HANDLER(s) {perror s;

exit(-1);}

typedef enum{ STAGE_HANPAI = 0,

STAGE_CALC}stage_t;

typedef struct barrier_hanpai_tag{ int mailbox_hanpai; /* 空

闲标志。0 为空闲,1 为繁忙 */ pthread_mutex_t m_hanpai[2];

/*m_hanpai[0] 与同步信号配套的互斥量 m_hanpai[1] 确保

喊牌期间运行控制线程( RC 线程)首先执行 */

pthread_cond_t c_hanpai_P2RC; /* 喊牌期间,玩家发给运

行控制线程的同步信号 */}barrier_hanpai_t,

*barrier_hanpai_p;

typedef struct barrier_calc_tag{ int mailbox_calc; /* 空闲标

志。 0 为空闲, 1 为繁忙 */ pthread_mutex_t m_calc[2];

/*m_calc[0] 与同步信号配套的互斥量 m_calc[1] 确保出牌

(计算)期间运行控制线程首先执行 */ pthread_cond_t

c_calc_P2RC; /* 计算期间, 玩家发给运行控制线程的同步信

号*/}barrier_calc_t, *barrier_calc_p;

typedef struct barrier_tag{ int sqno; /* 玩家序号 */ pthread_t

player[PLAYERCOUNT]; pthread_mutex_t m_global; /* 确

保运行控制线程每局均能首先运行 */ pthread_mutex_t

m_interplayer; /* 玩家线程间的互斥 */ pthread_cond_t

c_RC2P; /* 喊牌、计算期间, RC 线程发给玩家线程的信号

*/ pthread_cond_t c_ready_P2RC; /* 每局牌开始时的同步 */

struct barrier_hanpai_tag barrier_hanpai; struct

barrier_calc_tag barrier_calc;}barrier_t, *barrier_p;

typedef void (*sighandler_t)(int);

sigset_t signal_set;int repeatflag_hanpai = 1,

repeatflag_calc = 1, quitflag = 0;int player_hanpai_decision

= 0xca;char player_status_play = 0;char

player_status_hanpai = 0;sigjmp_buf

jmpbuf_hanpai[4];sigjmp_buf jmpbuf_calc[4];

void hanpai(int counter, int sqno, barrier_p mybarrier){ char

buffer[10];

/* 若为第

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值