GCD信号量 -- semaphore

news/2024/11/25 14:54:10/

GCD信号量:DispatchSemaphore

一、信号量简介

信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore VI以及Release Semaphore VI分别放置在每个关键代码段的首末端。确认这些信号量VI引用的是初始创建的信号量。

二、说明

GCD 中的信号量是指__Dispatch Semaphore__,是持有计数的信号。类似于过高速路收费站的栏杆。可以通过时,打开栏杆,不可以通过时,关闭栏杆。在 Dispatch Semaphore 中,使用计数来完成这个功能,计数为0时等待,不可通过。计数为1或大于1时,计数减1且不等待,可通过。

Dispatch Semaphore 三个函数:

  • DispatchSemaphore(value: 5):创建一个Semaphore并初始化信号的总量
  • semaphore.signal():发送一个信号,让信号量加1
  • semaphore.wait():可以使总信号量减1,当信号量为0时就会一直等待(阻塞所在线程),否则就可以正常执行。

注意:信号量的使用前提是:想清楚你需要处理哪个线程等待(阻塞),又要哪个线程继续执行,然后使用信号量。

Dispatch Semaphore 在实际开发中主要用于:

  • 保持线程同步,将异步执行任务转换为同步执行任务
  • 保证线程安全,为线程加锁

三、代码示例

let semaphore = DispatchSemaphore(value: 5)
for i in 0..<90 {DispatchQueue.global().async {print("****** 任务 \(i) 线程:\(Thread.current)")semaphore.signal()}semaphore.wait()
} 
print("****** end")

注意:.signal().wait() 是成对出现的


http://www.ppmy.cn/news/502941.html

相关文章

数组递归遍历在数据结构和算法中的作用

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言什么是数组递归遍历…

兄弟7010加粉解码DCP-7010加粉

兄弟7010加粉解码DCP-7010加粉后,(在套鼓的左方)将白色小推捍向右方推尽,放回机内即可。硒鼓确保前盖打开,然后按控制面板上的Option(选项)键,当屏幕上出现ReplaceDrum?(更换硒鼓)信息时,请按▲键.当屏幕上出现Accepted(已接受)信息时,请合上前盖.2040恢复出厂设置方法打开打印…

LeetCode算法题---两数之和(一)

两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任…

C++ 教程(19)——日期 时间

C 日期 & 时间 C 标准库没有提供所谓的日期类型。C 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构&#xff0c;需要在 C 程序中引用 <ctime> 头文件。 有四个与时间相关的类型&#xff1a;clock_t、time_t、size_t 和 tm。类型…

求一个好用的简洁设置的PPT倒计时器

标题求一个好用的简洁设置的PPT倒计时器 求一个好用的简洁设置的PPT倒计时器&#xff0c;不要复杂的设置&#xff0c;只要位置、大小、时间设置。

计时器的设计

利用前面关卡中设计的60进制计数器和24进制计数器&#xff0c;来联合设计一个24小时的计数器&#xff0c;要求具有同步置数、异步清零功能。

可任意设置时间的ppt倒计时软件

可任意设置时间的ppt倒计时软件 ppt倒计时软件&#xff0c;非定义宏插件&#xff0c;安装即可使用&#xff0c;十分简约&#xff0c;倒计时时长以及显示颜色可任意调整。 用起来很方便简单易上手。

PPT 播放计时器

PowerPoint 演示文稿播放计时器&#xff0c;是一款自主开发的办公用小应用软件&#xff0c;针对不同名称的 PowerPoint文稿&#xff0c;可分别设置不同的播放时间和提醒时间&#xff0c;广泛适应于各类企业、学校、政府等单位的工作汇报&#xff0c;能满足用户对汇报时间的精准…