wordpress 多语言站点,大型网站建设哪家快,稳健 安全的网站设计制作,浙江seo公司linux下多线程扑克游戏框架linux下多线程扑克游戏框架/**rc.c*文件描述#xff1a;*1)提供了linux下“升级”(北方常见的一种扑克玩法)游戏的框架。*2)库#xff1a;glibc2.15#xff1b;编译环境#xff1a;gcc4.7.2;内核#xff1a;3.8.4* 3) 编译#xff1a;gcc -pthr…linux下多线程扑克游戏框架linux下多线程扑克游戏框架/**rc.c*文件描述*1)提供了linux下“升级”(北方常见的一种扑克玩法)游戏的框架。*2)库glibc2.15编译环境gcc4.7.2;内核3.8.4* 3) 编译gcc -pthread -DDEBUG -o rc rc.c*作者漂流骑士*发布时间2013.4.3*/#include #include #include #include #include #include #include #include #include #include #include #include #include #define PLAYERCOUNT4#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];/*若为第二次喊牌