欢迎来到天天文库
浏览记录
ID:15959374
大小:43.50 KB
页数:6页
时间:2018-08-06
《linux下c语言多线程编程实例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、linux下C语言多线程编程实例2007年11月29日星期四10:39学东西,往往实例才是最让人感兴趣的,老是学基础理论,不动手,感觉没有成就感,呵呵。下面先来一个实例。我们通过创建两个线程来实现对一个数的递加。或许这个实例没有实际运用的价值,但是稍微改动一下,我们就可以用到其他地方去拉。下面是我们的代码:/*thread_example.c:cmultiplethreadprogramminginlinux*author:falcon*E-mail:tunzhj03@st.lzu.edu.cn*/#include#include2、tdio.h>#include#include#defineMAX10pthread_tthread[2];pthread_mutex_tmut;intnumber=0,i;void*thread1(){printf("thread1:I'mthread1");for(i=0;i3、}printf("thread1:主函数在等我完成任务吗?");pthread_exit(NULL);}void*thread2(){printf("thread2:I'mthread2");for(i=0;i4、oidthread_create(void){inttemp;memset(&thread,0,sizeof(thread));//comment1/*创建线程*/if((temp=pthread_create(&thread[0],NULL,thread1,NULL))!=0)//comment2printf("线程1创建失败!");elseprintf("线程1被创建");if((temp=pthread_create(&thread[1],NULL,thread2,NULL))!=0)//comment3printf("线程2创建失败");e5、lseprintf("线程2被创建");}voidthread_wait(void){/*等待线程结束*/if(thread[0]!=0){//comment4pthread_join(thread[0],NULL);printf("线程1已经结束");}if(thread[1]!=0){//comment5pthread_join(thread[1],NULL);printf("线程2已经结束");}}intmain(){/*用默认属性初始化互斥锁*/pthread_mutex_init(&mut,NULL);printf("我是主函数哦,我6、正在创建线程,呵呵");thread_create();printf("我是主函数哦,我正在等待线程完成任务阿,呵呵");thread_wait();return0;}下面我们先来编译、执行一下引文:falcon@falcon:~/program/c/code/ftp$gcc-lpthread-othread_examplethread_example.cfalcon@falcon:~/program/c/code/ftp$./thread_example我是主函数哦,我正在创建线程,呵呵线程1被创建线程2被创建我是主函数哦,我正在等待线程完成任务7、阿,呵呵thread1:I'mthread1thread1:number=0thread2:I'mthread2thread2:number=1thread1:number=2thread2:number=3thread1:number=4thread2:number=5thread1:number=6thread1:number=7thread2:number=8thread1:number=9thread2:number=10thread1:主函数在等我完成任务吗?线程1已经结束thread2:主函数在等我完成任务吗?线程2已经结束实例代码里头的注释应8、该比较清楚了吧,下面我把网路上介绍上面涉及到的几个函数和变量给引用
2、tdio.h>#include#include#defineMAX10pthread_tthread[2];pthread_mutex_tmut;intnumber=0,i;void*thread1(){printf("thread1:I'mthread1");for(i=0;i3、}printf("thread1:主函数在等我完成任务吗?");pthread_exit(NULL);}void*thread2(){printf("thread2:I'mthread2");for(i=0;i4、oidthread_create(void){inttemp;memset(&thread,0,sizeof(thread));//comment1/*创建线程*/if((temp=pthread_create(&thread[0],NULL,thread1,NULL))!=0)//comment2printf("线程1创建失败!");elseprintf("线程1被创建");if((temp=pthread_create(&thread[1],NULL,thread2,NULL))!=0)//comment3printf("线程2创建失败");e5、lseprintf("线程2被创建");}voidthread_wait(void){/*等待线程结束*/if(thread[0]!=0){//comment4pthread_join(thread[0],NULL);printf("线程1已经结束");}if(thread[1]!=0){//comment5pthread_join(thread[1],NULL);printf("线程2已经结束");}}intmain(){/*用默认属性初始化互斥锁*/pthread_mutex_init(&mut,NULL);printf("我是主函数哦,我6、正在创建线程,呵呵");thread_create();printf("我是主函数哦,我正在等待线程完成任务阿,呵呵");thread_wait();return0;}下面我们先来编译、执行一下引文:falcon@falcon:~/program/c/code/ftp$gcc-lpthread-othread_examplethread_example.cfalcon@falcon:~/program/c/code/ftp$./thread_example我是主函数哦,我正在创建线程,呵呵线程1被创建线程2被创建我是主函数哦,我正在等待线程完成任务7、阿,呵呵thread1:I'mthread1thread1:number=0thread2:I'mthread2thread2:number=1thread1:number=2thread2:number=3thread1:number=4thread2:number=5thread1:number=6thread1:number=7thread2:number=8thread1:number=9thread2:number=10thread1:主函数在等我完成任务吗?线程1已经结束thread2:主函数在等我完成任务吗?线程2已经结束实例代码里头的注释应8、该比较清楚了吧,下面我把网路上介绍上面涉及到的几个函数和变量给引用
3、}printf("thread1:主函数在等我完成任务吗?");pthread_exit(NULL);}void*thread2(){printf("thread2:I'mthread2");for(i=0;i4、oidthread_create(void){inttemp;memset(&thread,0,sizeof(thread));//comment1/*创建线程*/if((temp=pthread_create(&thread[0],NULL,thread1,NULL))!=0)//comment2printf("线程1创建失败!");elseprintf("线程1被创建");if((temp=pthread_create(&thread[1],NULL,thread2,NULL))!=0)//comment3printf("线程2创建失败");e5、lseprintf("线程2被创建");}voidthread_wait(void){/*等待线程结束*/if(thread[0]!=0){//comment4pthread_join(thread[0],NULL);printf("线程1已经结束");}if(thread[1]!=0){//comment5pthread_join(thread[1],NULL);printf("线程2已经结束");}}intmain(){/*用默认属性初始化互斥锁*/pthread_mutex_init(&mut,NULL);printf("我是主函数哦,我6、正在创建线程,呵呵");thread_create();printf("我是主函数哦,我正在等待线程完成任务阿,呵呵");thread_wait();return0;}下面我们先来编译、执行一下引文:falcon@falcon:~/program/c/code/ftp$gcc-lpthread-othread_examplethread_example.cfalcon@falcon:~/program/c/code/ftp$./thread_example我是主函数哦,我正在创建线程,呵呵线程1被创建线程2被创建我是主函数哦,我正在等待线程完成任务7、阿,呵呵thread1:I'mthread1thread1:number=0thread2:I'mthread2thread2:number=1thread1:number=2thread2:number=3thread1:number=4thread2:number=5thread1:number=6thread1:number=7thread2:number=8thread1:number=9thread2:number=10thread1:主函数在等我完成任务吗?线程1已经结束thread2:主函数在等我完成任务吗?线程2已经结束实例代码里头的注释应8、该比较清楚了吧,下面我把网路上介绍上面涉及到的几个函数和变量给引用
4、oidthread_create(void){inttemp;memset(&thread,0,sizeof(thread));//comment1/*创建线程*/if((temp=pthread_create(&thread[0],NULL,thread1,NULL))!=0)//comment2printf("线程1创建失败!");elseprintf("线程1被创建");if((temp=pthread_create(&thread[1],NULL,thread2,NULL))!=0)//comment3printf("线程2创建失败");e
5、lseprintf("线程2被创建");}voidthread_wait(void){/*等待线程结束*/if(thread[0]!=0){//comment4pthread_join(thread[0],NULL);printf("线程1已经结束");}if(thread[1]!=0){//comment5pthread_join(thread[1],NULL);printf("线程2已经结束");}}intmain(){/*用默认属性初始化互斥锁*/pthread_mutex_init(&mut,NULL);printf("我是主函数哦,我
6、正在创建线程,呵呵");thread_create();printf("我是主函数哦,我正在等待线程完成任务阿,呵呵");thread_wait();return0;}下面我们先来编译、执行一下引文:falcon@falcon:~/program/c/code/ftp$gcc-lpthread-othread_examplethread_example.cfalcon@falcon:~/program/c/code/ftp$./thread_example我是主函数哦,我正在创建线程,呵呵线程1被创建线程2被创建我是主函数哦,我正在等待线程完成任务
7、阿,呵呵thread1:I'mthread1thread1:number=0thread2:I'mthread2thread2:number=1thread1:number=2thread2:number=3thread1:number=4thread2:number=5thread1:number=6thread1:number=7thread2:number=8thread1:number=9thread2:number=10thread1:主函数在等我完成任务吗?线程1已经结束thread2:主函数在等我完成任务吗?线程2已经结束实例代码里头的注释应
8、该比较清楚了吧,下面我把网路上介绍上面涉及到的几个函数和变量给引用
此文档下载收益归作者所有