线程的退出

方式1

pthread_exit

Void  pthread_exit (void *retval)

功能:

    结束调用的线程

参数:

    retval   //退出状态值   //需要传的是,退出状态值的地址

注意:

    1.pthread_exit   本身表示结束线程

      如果用在main函数中 表示结束主线程

      主线程结束   并不表示进程

方式2:

在次线程中return

此时的效果相当于调用了pthread_exit()

方式3:

调用pthread_cancel(pthread_t pthread)

功能:

    通过发送取消的请求来结束次线程

参数;

     pthread:要结束的线程的tid号

线程的资源回收

Int pthread_join(pthread_t thread,void **retval)

功能:

      等待线程结束

参数:

返回值:

     成功  0

     失败  错误码

注:

   线程退出时,可以带出退户状态值

   但是传的是

1.pthread_join  //需要自己回收  -----线程的属性(可结合性)  --一般是子线程  在短时间内运行完

2.//可分离属性   ----子线程运行很久才结束  ---设置分离属性

函数:

Pthread_detach()

Int pthread_detach(pthread_t thread);

功能:

    分离线程

参数:

    thread  要分离的线程的tid

返回值:

   成功   0

   失败   错误码

对比 线程 和 进程

1.线程 vs  进程

线程 cpu 执行的最小单位

进程 资源分配和任务调度的最小单位

2.各自特点(优缺点)

//1.创建   和   调度

线程

   创建速度快

   调度速度快

   //线程的并发程度   更高

Time:获取可执行程序的运行时间

//2.安全性

线程

     优点:因为共享了进程的数据空间,所以在共享数据方面,更方便

     缺点:安全性不好

               带来了资源竞争    //专门的技术  解决资源竞争  ----互斥   同步

进程

     优点:进程空间相互独立,好处就是安全性更高

     缺点:进程间共享数据不方便    //进程间通信   (管道,信号,共享内存)

线程间的资源竞争:

    共享资源:临界资源

    临界区:访问共享资源(临界资源)的代码

机制:

    互斥锁

    互斥       排他性

    锁

定义互斥锁:

   pthread_mutex_t   mutex;

   互斥锁类型   互斥锁变量  内核对象

 加锁:   //加锁  加在  要访问临界资源的地方

Pthread_mutex_lock()  //加锁

解锁:        //临界资源访问完就解锁

Pthread_mutex_unlock()    //解锁

销毁:

Pthread_mutex_destory()    //销毁一把锁

因为使用锁的时候会占用一部分硬件资源,如果不销毁的话,硬件资源不会被释放

Pthread_mutex_init()

功能:

    初始化   互斥锁

  int pthread_mutex_init(

总结:

//锁是一种线程间   同步机制

//互斥锁   保证线程对于共享资源的排他性访问

                保证每个线程访问时的原子性操作(不可分割)

//操作

//初始化    一把锁

//   动态初始化pthread_mutex_init

//   静态初始化   用初始化的宏

//   加锁

//   解锁

//   销毁

处理错误:

全局变量的默认初始值为0

线程间的顺序问题;

//同步操作

强调的是线程的  顺序问题

信号量  //交通信号灯

             //实现一种可以让线程之间有序访问的=临界资源的方式

信号量的本质:

           一把锁

            //一把可以顺序操作的锁

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值