ios-锁机制-条件锁的使用
条件锁很简单 这里给大家简单的简介几个例子
<pre name="code" class="objc">条件锁类似于Operation中的依赖关系
信号量类似于OperationQueue中的设置的最大并发量
#import "LockViewController.h"@interface LockViewController ()@end@implementation LockViewController- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; /** * 条件锁类似于Operation中的依赖关系 信号量类似于OperationQueue中的设置的最大并发量 * * @return */ /** * 常见的锁 * 1.@synchronized 对象锁 2.NSLock 互斥锁 3.NSConditionLock条件锁 * @return */ //创建一个条件锁 NSConditionLock *clock = [[NSConditionLock alloc]initWithCondition:3]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{// NSLog(@"") //加锁 [clock lockWhenCondition:3]; NSLog(@"11111111111111111111"); [clock unlockWithCondition:3]; }); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [clock lockWhenCondition:3]; NSLog(@"2222222222222222"); [clock unlockWithCondition:3]; }); // Do any additional setup after loading the view.}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}/*#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller.}*/
我们使用条件锁要加上一个条件 是一个整数 这个整数随意加
但是要明白条件锁的使用原理 上面已经介绍了条件锁的一些使用方法
我们看一下上面的例子运行的结果
如果我们改变条件看看会发生什么情况
我们再改变一下条件
我们再这样改
条件改变我们要遵守条件!
ios-锁机制-条件锁的使用相关推荐
- 【Java 并发编程】线程锁机制 ( 线程安全 | 锁机制 | 类锁 | 对象锁 | 轻量级锁 | 重量级锁 )
文章目录 一.线程安全 二.锁机制 ( 类锁 | 对象锁 ) 三.锁分类 ( 轻量级锁 | 重量级锁 ) 一.线程安全 多个线程同时访问 同一个共享变量 时 , 只要能保证 数据一致性 , 那么该变量 ...
- mysql oracle 锁机制_Mysql锁机制
1.Mysql锁的基本介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制在数据库中,除传统的计算资源(CPU,IO,RAM)的竞争外,数据也是许多用户共享的资源,如何保证数据并发访问的一致性,是 ...
- mysql锁机制——乐观锁、悲观锁;共享锁、排他锁、行表锁、间隔后码锁、MVCC 与 thinkphp的lock解析
锁的引入 如果A有100元,同时对B.C转账,若处理是同时的,则此时同时读取A的余额为100元,在对两人转账后写回,A的余额不是0元而是50元.因此,为了防止这种现象的出现,要引入锁的概念,如只有在A ...
- python的锁机制_python锁机制
python 多线程 真正的多线程吗? 对于多核处理器,在同一时间确实可以多个线程独立运行,但在Python中确不是这样的了.原因在于,python虚拟机中引入了GIL这一概念.GIL(Global ...
- 数据库的锁机制(悲观锁/乐观锁)
在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性. 乐观并发控制(乐观锁)和悲观并发控制(悲 ...
- Java中的锁机制 -- 乐观锁、悲观锁、自旋锁、可重入锁、读写锁、公平锁、非公平锁、共享锁、独占锁、重量级锁、轻量级锁、偏向锁、分段锁、互斥锁、同步锁、死锁、锁粗化、锁消除
文章目录 1. Java中的锁机制 1.1 乐观锁 1.2 悲观锁 1.3 自旋锁 1.4 可重入锁(递归锁) 1.5 读写锁 1.6 公平锁 1.7 非公平锁 1.8 共享锁 1.9 独占锁 1.1 ...
- MySQL的锁机制 - 记录锁、间隙锁、临键锁
记录锁(Record Locks) 记录锁是 封锁记录,记录锁也叫行锁,例如: SELECT * FROM `test` WHERE `id`=1 FOR UPDATE; 它会在 id=1 的记录上加 ...
- 【Redis】事物和锁机制乐观锁悲观锁
目录 1. Redis 的事务定义 2. Multi.Exec.discard 3. 事务的错误处理 4. 事务冲突的问题 悲观锁 乐观锁 1. Redis 的事务定义 Redis 事务是一个单独的隔 ...
- Java的锁机制--偏向锁、轻量锁、自旋锁、重量锁
基础知识 线程切换代价 Java的线程是映射到操作系统的原生线程之上的,如果阻塞或唤醒一个线程就需要操作系统介入,需要在用户态和内核态之间切换,该切换会消耗大量的系统资源,因为用户态和内核态均有各自专 ...
最新文章
- java中怎么放入.jpg_Java如何设置jpg质量
- 第二百七十五节,MySQL数据库安装和介绍
- 永不停止的程序。。。
- Spring boot的简单用法
- linux代码工具tag,gcov-dump原理分析_Linux平台代码覆盖率测试
- iqc工作职责和工作内容_新媒体实习生是做什么的?新媒体实习生岗位职责工作内容...
- Ajax前台传数组,Java后台接收方式
- 晶振-电路中的心脏起搏器
- Python爬虫案例——漫画网站爬取图片(模拟浏览器解析网页)
- Layout state should be one of 100 but it is 10
- PHP 下载保存文件到本地
- linux脚本:每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下
- 今晚7:30 | 连界、将门、百度、碧桂园创投四位大佬眼中的AI世界,是继续高深还是回归商业本质?...
- VS code 快速配置C语言编写环境
- php 对象教程,创建一个简单的PHP对象_PHP教程
- Matlab 统计不同元素个数
- STM32H7内部Flash的读保护说明(Level0默认,Level1连接保护,Level2设备和自举保护)
- 使用CompletableFuture+ExecutorService+Logback的多线程测试
- android中一些特殊字符(如:←↑→↓等箭头符号)的Unicode码值
- 鏖战2021年618
热门文章
- 在c语言中通过return语句,c语言中return的用法
- 11.10②3D建模
- iphone 代码整理
- Android录音功能Android Studio实现
- 羽毛球发球机改装记录
- visio图片自适应贴边,存储为pdf
- python读取文件,读文件的前几行
- Python数据清洗 预处理入门完整指南!
- HashMap遍历的方法——总结
- 问题备忘:	 class path resource [xx] cannot be resolved to absolute file path because it does not reside