Linux程序设计:POSIX线程

发布时间:2024年01月23日

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) ;
  • 多线程
    • 代码示例
  • 小结
    • 进程/多线程概念。如何开启进程,开启线程。线程同步,共享。

文章来源:https://blog.csdn.net/Liang123l/article/details/135768180
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。