多线程程序设计
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程程序设计相关的知识,希望对你有一定的参考价值。
多线程程序设计
多线程编程类
12.1 打开文件
12.1.1 函数名
Pthread_create
12.1.2 函数原形
Int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine)(void *),void *arg)
12.1.3 函数功能
创建新的线程
12.1.4 所属头文件
<pthread.h>
特别注意:编译时必须链接pthread库
12.1.5 返回值
成功:0
失败:错误编码
12.1.6 参数说明
Thread:新创建线程的id
Attr:待创建线程的属性,一般为NULL
Start_routine:线程的入口函数
Arg:线程入口函数的参数,可以为NULL
12.2 等待线程结束
12.2.1 函数名
Pthread_join
12.2.2 函数原形
Int pthread_join(pthread_t thread,void **retval)
12.2.3 函数功能
用于等待线程结束
12.2.4 所属头文件
<pthread.h>
特别注意:编译时必须链接pthread库
12.2.5 返回值
成功:0
失败:错误编号
12.2.6 参数说明
Thread:要等待结束的线程id
Retval:保存线程推出时的状态,一般不保存
12.3 退出线程
12.3.1 函数名
Pthread_exit
12.3.2 函数原形
Void pthread_exit(void *retval)
12.3.3 函数功能
结束线程
12.3.4 所属头文件
<pthread.h>
特别注意:编译时必须链接pthread库
12.3.5 返回值
返回值为NULL
12.3.6 参数说明
Retval:保存返回值
例程:
thread.c
1 #include <stdio.h> 2 #include <pthread.h> 3 4 int number = 0; 5 pthread_mutex_t mut; 6 pthread_t thread[2]; 7 8 void * worker1() 9 { 10 int i = 0; 11 printf("I am work1\n"); 12 for(i=0;i<10;i++) 13 { 14 pthread_mutex_lock(&mut); 15 number++; 16 pthread_mutex_unlock(&mut); 17 printf("work1 numbier is %d\n",number); 18 19 sleep(1); 20 } 21 pthread_exit(NULL); 22 } 23 void * worker2() 24 { 25 int i = 0; 26 printf("I am work2\n"); 27 for(i=0;i<10;i++) 28 { 29 pthread_mutex_lock(&mut); 30 number++; 31 pthread_mutex_unlock(&mut); 32 printf("work2 numbier is %d\n",number); 33 34 sleep(1); 35 } 36 pthread_exit(NULL); 37 38 } 39 40 int main() 41 { 42 pthread_mutex_init(&mut,NULL); 43 //创建工人1线程 44 pthread_create(&thread[0],NULL,worker1,NULL); 45 46 //创建工人2线程 47 pthread_create(&thread[1],NULL,worker2,NULL); 48 49 //等待工人1线程的结束 50 pthread_join(thread[0],NULL); 51 52 //等待工人2线程的结束 53 pthread_join(thread[1],NULL); 54 55 return 0; 56 }
以上是关于多线程程序设计的主要内容,如果未能解决你的问题,请参考以下文章