多线程程序设计

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 }
thread.c

 

以上是关于多线程程序设计的主要内容,如果未能解决你的问题,请参考以下文章

多线程程序设计

QT 多线程程序设计(也有不少例子)

Qt学习 之 多线程程序设计

Java多线程程序设计初步入门

POSIX 多线程程序设计

[国嵌攻略][087][多线程程序设计]