多线程编程实例(C预言实现)(转自百度百科)

来源:互联网 发布:mac优盘显示不出来 编辑:程序博客网 时间:2024/06/07 14:42
#include <pthread.h>#include <stdio.h>#include <sys/time.h>#include <string.h>#include <unistd.h>#define MAX 10pthread_t thread[2];pthread_mutex_t mut;int number = 0, i; void * thread1(void * x){printf ("thread1 : I'm thread 1\n");for (i = 0; i < MAX; i++) {printf("thread1 : number = %d\n", number);pthread_mutex_lock(&mut);number++;pthread_mutex_unlock(&mut);sleep(2);}printf("thread1 :主函数在等我完成任务吗?\n");pthread_exit(NULL);/* return NULL; */}void * thread2(void * x){printf("thread2 : I'm thread 2\n");for (i = 0; i < MAX; i++) {printf("thread2 : number = %d\n", number);pthread_mutex_lock(&mut);number++;pthread_mutex_unlock(&mut);sleep(3);}printf("thread2 :主函数在等我完成任务吗?\n");pthread_exit(NULL);/* return NULL; */}void thread_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_create(&thread[1], NULL, thread2, NULL)) != 0) /* comment3 */printf("线程2创建失败");else printf("线程2被创建\n");}void thread_wait(void){/*等待线程结束*/if(thread[0] != 0) { /* comment4 */pthread_join(thread[0],NULL);printf("线程1已经结束\n");}if(thread[1] != 0) { /* comment5 */ pthread_join(thread[1],NULL);printf("线程2已经结束\n");}} int main(){/*用默认属性初始化互斥锁*/pthread_mutex_init(&mut,NULL);printf("我是主函数哦,我正在创建线程,呵呵\n");thread_create();printf("我是主函数哦,我正在等待线程完成任务阿,呵呵\n");thread_wait(); return 0;}

原创粉丝点击