作者:x75066882 | 来源:互联网 | 2013-06-17 10:16
线程基本控制
1、线程创建
int pthread_create(pthread_t *pid,pthread_attr_t *attr,void *(start_routine)(void*),void *arg);
pthread_create创建一个线程,这个线程将执行函数start_routine,该函数的参数由arg提供,可以调用pthread_exit 终止线程或
函数执行完时终止。attr是线程属性,暂时先设置为NULL,后面讲。
每一个进程都共享一个地址空间和资源,它跟fork进程不同,每一个进程都有自己的地址空间和资源。
执行成功返回0,执行失败返回非0。
2、获取线程ID。
pthread_t *pthread_self();
3、结束线程
void pthread_exit(void *retval);
retval 是执行该函数的返回值,成功则0,失败返回-1。
4、挂起线程
int pthread_join(pthread_t *tid,void **thread_return);
该函数用于挂起线程,直至 该线程终止,tid是线程id,thread_return 是线程的返回值。
5、演示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/*
* =====================================================================================
*
* Filename: main.c
*
* Description: i
*
* Version: 1.0
* Created: 02/18/2013 10:46:58 PM
* Revision: none
* Compiler: gcc
*
* Author: WuShuai ,
* Blog: imsiren.com
* Organization:
*
* =====================================================================================
*/
#include
#include
voidrunner(void*arg){
pthread_t t=pthread_self();
printf("thread id:%x\n",(unsignedint)t);
}
intmain(){
intarg=1000;
void*ret;
pthread_t tid[2];
pthread_create(&tid[1],NULL,(void*)&runner,(void*)arg);
pthread_create(&tid[2],NULL,(void*)&runner,(void*)arg);
pthread_join(tid[1],&ret);
pthread_join(tid[2],&ret);
return0;
}
|
编译:
gcc -g -o thread main.c -lpthread
结果:
[root@s thread]# ./thread
thread id:b6d72b70
thread id:b7773b70