首页 > 代码库 > Linux多线程实例练习 - pthread_cancel()
Linux多线程实例练习 - pthread_cancel()
Linux多线程实例练习 - pthread_cancel
1、代码 xx_pthread_cancel.c
#include <pthread.h>#include <stdio.h>#include <unistd.h>#define debug_Msg(fmt, arg...) do{ printf("%s %d : ", __FILE__, __LINE__); printf(fmt, ##arg); }while(0)#define ENABLE_Xchar * pe = "enable return";void * state_Enable(void *arg){ int i = 0; int iExit = 0; while(i < 10 && iExit == 0) { debug_Msg("state Enable : [%d]\n", i); i++; sleep(1); } char * p = pe; return p;}#define DISABLE_Xchar * pd = "disable return";void * state_Disable(void * arg){ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL); int i = 0; int iExit = 0; while(i < 10 && iExit == 0) { debug_Msg("state Disable : [%d]\n", i); i++; sleep(1); } char * p = pd; return p;}int main(){#ifdef ENABLE_X pthread_t pid; pthread_create(&pid, NULL, state_Enable, NULL); sleep(3); pthread_cancel(pid); void * p = NULL; printf("init with : [%08X]\n", (unsigned int)p); pthread_join(pid, &p); printf("pe addr : [%08X]\n", (unsigned int)pe); printf("over with : [%08X]\n", (unsigned int)p);#endif#ifdef DISABLE_X pthread_t pDis; pthread_create(&pDis, NULL, state_Disable, NULL); sleep(3); pthread_cancel(pDis); p = NULL; printf("init with : [%08X]\n", (unsigned int)p); pthread_join(pDis, &p); printf("pd addr : [%08X]\n", (unsigned int)pd); printf("over with : [%08X]\n", (unsigned int)p);#endif}
2、CentOS 编译通过
g++ -g -c -o xx_pthread_cancel.o xx_pthread_cancel.c g++ -g -o xx_pthread_cancel xx_pthread_cancel.o -lpthread
3、运行结果
$ ./xx_pthread_cancel xx_pthread_cancel.c 19 : state Enable : [0]xx_pthread_cancel.c 19 : state Enable : [1]xx_pthread_cancel.c 19 : state Enable : [2]init with : [00000000]pe addr : [08048959]over with : [FFFFFFFF]xx_pthread_cancel.c 36 : state Disable : [0]xx_pthread_cancel.c 36 : state Disable : [1]xx_pthread_cancel.c 36 : state Disable : [2]init with : [00000000]xx_pthread_cancel.c 36 : state Disable : [3]xx_pthread_cancel.c 36 : state Disable : [4]xx_pthread_cancel.c 36 : state Disable : [5]xx_pthread_cancel.c 36 : state Disable : [6]xx_pthread_cancel.c 36 : state Disable : [7]xx_pthread_cancel.c 36 : state Disable : [8]xx_pthread_cancel.c 36 : state Disable : [9]pd addr : [08048968]over with : [08048968]
Linux多线程实例练习 - pthread_cancel()
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。