小工具      在线工具  汉语词典  css  js  c++  java

调度信号量

很多程序都是使用信号量来设计的,多线程编程中经常使用生产者-消费者模型。 GCD 提供了自己的一套信号量机制。

1.dispatch_semaphore_t sema = dispatch_semaphore_create(RESOURCE_SIZE); 
2.dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER); 
3.//do some work here. 
4.dispatch_semaphore_signal(sema); 

dispatch_semaphore_wait用于获取信号量。如果信号量为0,则等待信号量大于0,处理任务完成后,释放相关资源,并调用dispatch_semaphore_signal将信号量加1。


例子:

 //    创建一个信号量,值为0        
    dispatch_semaphore_t sema = dispatch_semaphore_create(0);
        //    在一个操作结束后发信号,这会使得信号量+1
        ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {

            dispatch_semaphore_signal(sema);

        });
    //    一开始执行到这里信号量为0,线程被阻塞,直到上述操作完成使信号量+1,线程解除阻塞
    dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);


. . .

相关推荐

额外说明

每天 4 道算法题 - 第 015 天

目录 1、两句话中的不常见单词 2、螺旋矩阵 III 3、可能的二分法 4、鸡蛋掉落 1、两句话中的不常见单词 句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。 如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却 没有出现 ,那么这个

额外说明

SpringCloud学习笔记-gateway网关自定义全局过滤器

需求:定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件: 参数中是否有authorization, authorization参数值是否为admin 如果同时满足则放行,否则拦截 实现: 在gateway中定义一个过滤器: package cn.

额外说明

理解互联网三高架构:高并发、高性能、高可用

互联网三高架构:高并发、高性能、高可用,简称三高(3H) 互联网应用系统开发肯定经常会看到高并发和高性能这两个词,可谓是耳熟能详,而具体的含义和关系真的如你所想的,真正的理解了吗? 先来看一个例子: 一个蓄水池,是1m*1m*1m=1立方米大小,有一个出

额外说明

Python每日一练——数据存储第七关:ORM框架知多少

面试题第七关: 第一部分——考点: 了解常用的ORM框架; 使用SQLObject框架操作MySQL数据库。 第二部分——面试题: 1.面试题一:在Python语言中有哪些常用的ORM框架,它们有什么区别? 2.面试题二:如何使用SQLObject框架操

额外说明

Python的os模块详解

在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包差不多,比喻一下,模块就是工具箱,要想使用这个工具箱中的工具(函数、类),就需要先导入这个模块。 在Python中用关键字“import”来导入某个模块,例如导入

额外说明

Python Built-in Functions内置函数用法总结(全)

函数列表 abs(x) all(iterable) any(iterable) ascii(object) bin([x]) bool(x) bytearray([source[, encoding[, errors]]]) bytes([source[

额外说明

设计模式之观察者设计模式

简述: 使用过MQ的人对该模式应该不会陌生,简单来说就是发布和订阅的模式,一个被观察者,对应多个观察者,被观察者有状态更新的时候,通知所有观察者进行相关操作。 角色: 在观察者设计模式中,存在四种角色。 1.抽象被观察者角色 2.抽象观察者角色 3.具体

额外说明

Android 性能优化--Protobuf使用及原理

文章目录 Android 性能优化--Protobuf使用及原理 1. 什么是Protobuf? 1.1 优点 1.2 缺点 1.3 应用场景 2. 使用 2.1 安装 protoc 2.1.1 ubuntu 安装 protoc 2.1.2 window

额外说明

[JAVAee]文件操作-IO

本文章讲述了通过java对文件进行IO操作 IO:input/output,输入/输出.  建议配合文章末尾实例食用 目录 文件 文件的管理 文件的路径 文件的分类 文件系统的操作 File类的构造方法 File的常用方法 文件内容的读写 FileInp

额外说明

FinGPT:开源金融大型语言模型

文章目录 摘要 1、简介 2、相关工作 2.1、LLMs和ChatGPT 2.2、金融LLMs 2.3、为什么要开源FinLLMs? 3、以数据为中心的FinLLMs方法 3.1、财务数据及独特性 3.2、处理财务数据的挑战 4、FinGPT概述:一个用

ads via 小工具