首页 > 其他分享 >线程的互斥和同步

线程的互斥和同步

时间:2023-02-26 09:47:02浏览次数:41  
标签:同步 创建 共享资源 互斥 线程 上锁 属性

互斥:

  相互排斥,表示线程对共享资源的访问时相互排斥的,即不能同时操作(一个线程对共享资源写时,另外一个线程不能再对这个共享资源进行读写),保证线程的安全,互斥不能保证  线程执行的先后顺序

实现互斥的方式:

  互斥锁

  读写锁

  线程信号量

 

同步:

  包含了互斥,即既保证了线程的安全,又能保证线程执行的先后顺序

实现同步的方式:

  条件变量

  线程信号量

 

互斥锁:

  互斥锁的数据类型:pthread_mutex_t

  互斥锁是一种加锁的方法来控制对共享资源的访问。同一时刻只能由一个线程掌握某个互斥锁(就是有一把互斥锁),一个线程对共享资源上锁了,其他线程希望上锁一个已经上了互  斥锁的共享资源,那么这些线程将会阻塞,直到上锁的线程释放互斥锁为止。

  通俗的解释就是:某个线程对共享资源上了某把互斥锁,其他线程想重新用这把互斥锁上锁,那这些线程将会阻塞,直到上锁的线程将这把互斥锁释放为止。

 

互斥锁的创建和销毁:

 

 参数:

  mutex:要创建的那把互斥锁(互斥锁可以创建多把)

  mutexattr:互斥锁创建方式

    

上锁和解锁:

 

互斥锁的整体使用流程:
  1. 创建互斥锁

  2. 对共享资源枷锁

  3. 对共享资源解锁

  4. 释放互斥锁

注意:一把互斥锁就和某个共享资源绑定。如果有多个共享资源,可以定义多把互斥锁。建议不要把互斥锁定义为全局变量。

 

 互斥锁属性创建和销毁:

 

 互斥锁也有很多属性,和线程一样,都有一个结构来定义这些属性(pthread_mutexattr_t),如进程共享属性、互斥锁的类型

互斥锁进程共享属性:

 

 

 

 

互斥锁的类型:

 

标签:同步,创建,共享资源,互斥,线程,上锁,属性
From: https://www.cnblogs.com/zj-studyrecoding/p/17156140.html

相关文章