POSIX线程
- 什么是线程
- 线程是一个进程内部的一个控制序列。
- posix标准。
- 新创建的线程与创建者共享全局变量、文件描述符号、信号处理函数和当前目录状态。
- 线程的优点和缺点
- 创建线程要比创建进程代价要小。
- 让程序看起来同时在做两件事情。
- 多线程i调试要比较苦难。
- 对机器处理器要求比较高。
- 开启线程
- -lpthread链接线程池库。
- pthread_create 函数
- 定义如下
#include<pthread.h>
int pthread_create(pthread_t *thread,pthread_attr_t *attr
,void*(*start_routine)(void*),void*arg)
-
- 一个简单的线程程序
#include#include#include#include#include
void *thread_function(void *arg);
char message[]= "hello pthread" ;
int main(){
int res ;
pthread_t a_thread ;
void *thread_reasult;
res = pthread_create(&a_thread,NULL,thread_funciton,(void*)message) ;
if(res !=0){
perror("thread creation failed .");
exit(EXIT_FAILURE);
}
printf("waiting for thread to finish ...");
res = phread_join(a_thread,&thread_result);
if(res !=0){
perror("thread join failed .");
exit(EXIT_FAILURE);
}
printf("thread join , it retured %s ",(char*)thread_result);
printf("message is now %s",message);
exit(EXIT_SUCCESS) ;
}
void *thread_function(void *arg){
printf("thread_function is running . argument was %s \n", (char*)arg);
sleep(3) ;
strcpy(message,"byte . ");
pthread_exit("thank you for the cpu time . ");
}
- 同步
- 用信号量进行同步
- 用互斥量进行同步
- 线程属性
- 脱离线程(pthread_detach方法创建)detachedstate schedpolicyschedparaminheritschedscopestacksize
- 线程调度 sched_get_priority_max 和sched_get_priority_min 这两个函数来查找可用的优先级级别。
- 取消一个线程
- 线程终止函数 : int pthread_setcancelstate(int state , int * oldstate) ;
- 多线程
- 代码示例
- 小结
- 进程/多线程概念。如何开启进程,开启线程。线程同步,共享。