目录
1. Linux的概念
2. 线程的分类
3. Linux线程实现
3.1 线程标识
3.2 线程创建
3.2.1 线程创建实例
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void* th_fn(void *arg)
{
int distance = (int)arg;
int i;
for(i = 1; i <= distance; i++){
printf("%lx run %d\n", pthread_self(), i);
int time = (int)(drand48()*100000);
usleep(time);
}
return (void*)0;
}
int main()
{
int err;
pthread_t rabbit, turtle;
//创建rabbit线程
if((err = pthread_create(&rabbit, NULL,
th_fn, (void*)50)) != 0){
perror("pthread_create error");
}
//创建turtle线程
if((err = pthread_create(&turtle, NULL,
th_fn, (void*)50)) != 0){
perror("pthread_create error");
}
//主控线程调用pthread_join(),自己会阻塞
//直到rabbit&tuttle线程结束方可运行
pthread_join(rabbit, NULL);
pthread_join(turtle, NULL);
//sleep(10);
printf("control thread id: %lx\n", pthread_self());
printf("finished\r\n");
return 0;
}
运行结果:
… …
3.3 线程终止
3.3.1 主动终止
3.3.2 被动终止
3.4 线程清理和控制函数
3.5 进程、线程启动和终止方式的比较
4. 线程的状态转换
5. 线程属性
5.1 线程属性初始化和销毁
5.2 设置和获得分离属性
参考资料
【1】海同教育Linux系统编程
【2】C语言中文网:Linux学习教程
【3】Linux C编程一站式学习