Linux程序设计:POSIX线程

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

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值