欢迎来到天天文库
浏览记录
ID:62033758
大小:28.50 KB
页数:5页
时间:2021-04-15
《linux下C语言多线程编程实例.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、linux下C语言多线程编程实例2007年11月29日 星期四10:39学东西,往往实例才是最让人感兴趣的,老是学基础理论,不动手,感觉没有成就感,呵呵.ﻫ下面先来一个实例。我们通过创建两个线程来实现对一个数的递加。或许这个实例没有实际运用的价值,但是稍微改动一下,我们就可以用到其他地方去拉。ﻫﻫ下面是我们的代码:/*thread_example。c: c multiplethreadprogramming inlinux *author:falcon*E—mail :tunzhj03@st.lzu.edu.cn */#include<pthread。h>#include 〈
2、stdio.h〉#include<sys/time。h〉#include〈string.h〉#defineMAX10pthread_t thread[2];pthread_mutex_tmut;int number=0, i;void*thread1(){ printf ("thread1: I'mthread1\n"); for(i= 0;i <MAX;i++) { printf(”thread1:number=%d",number); pthread_mutex_lock(&mut); number++; pthread_mutex_unlo
3、ck(&mut); sleep(2); } printf("thread1:主函数在等我完成任务吗?"); pthread_exit(NULL);}void*thread2(){ printf(”thread2:I’m thread2\n"); for (i= 0;i< MAX;i++) { printf(”thread2 :number=%d",number); pthread_mutex_lock(&mut); number++; pthread_mutex_unlock(&mut); sleep(3); } pri
4、ntf(”thread2:主函数在等我完成任务吗?n"); pthread_exit(NULL);}voidthread_create(void){int temp; memset(&thread,0,sizeof(thread)); //comment1 /*创建线程*/ if((temp= pthread_create(&thread[0],NULL,thread1, NULL)) !=0) //comment2 printf("线程1创建失败!n");else printf("线程1被创建n"); if((temp=pthread_c
5、reate(&thread[1],NULL, thread2,NULL)) !=0)//comment3 printf("线程2创建失败"); else printf("线程2被创建n”);}voidthread_wait(void){ /*等待线程结束*/ if(thread[0]!=0){ //comment4 pthread_join(thread[0],NULL); printf("线程1已经结束n");} if(thread[1] !=0){ //comment5 pthread_join(thread[
6、1],NULL); printf("线程2已经结束”); }}intmain(){ /*用默认属性初始化互斥锁*/ pthread_mutex_init(&mut,NULL);printf("我是主函数哦,我正在创建线程,呵呵n"); thread_create();printf(”我是主函数哦,我正在等待线程完成任务阿,呵呵”); thread_wait(); return0;}ﻫ下面我们先来编译、执行一下ﻫﻫ引文: ﻫfalcon@falcon:~/program/c/code/ftp$ gcc-lpthread —othread_exa
7、mplethread_example.cﻫfalcon@falcon:~/program/c/code/ftp$ 。/thread_example我是主函数哦,我正在创建线程,呵呵线程1被创建ﻫ线程2被创建我是主函数哦,我正在等待线程完成任务阿,呵呵thread1:I'm thread 1ﻫthread1 : number= 0thread2:I’m thread2ﻫthread2:number =1ﻫthread1:number =2ﻫthread2:number=3thread1:number =4
此文档下载收益归作者所有