NSConditionLock 继承类NSObject 遵从的协议NSLocking NSObject

NSConditionLock 类定义特定的、用户定义的条件

协议NSLocking 方法 lock unlock

//初始化一个NSConditionLock对象
- (id)initWithCondition:(NSInteger)condition

//返回一个Condition
- (NSInteger)condition

//获取和释放锁
1、– (BOOL)lockBeforeDate:(NSDate *)limit
//在指定时间前尝试获取锁,若成功则返回YES 否则返回NO
2、– (void)lockWhenCondition:(NSInteger)condition

//尝试获取锁。在加锁成功前接收对象的Condition必须与参数Condition 相同

3、– (BOOL)lockWhenCondition:(NSInteger)condition beforeDate:(NSDate *)limit
//同上,只是又加上了一个时间

4、– (BOOL)tryLock //尝试着获取锁
5、– (BOOL)tryLockWhenCondition:(NSInteger)condition
//如果接收对象的condition与给定的condition相等,则尝试获取锁
6、– (void)unlockWithCondition:(NSInteger)condition
//解锁并设置接收对象的condition

//访问方法
– setName:
– name

NSCondition 类 断言

用一个NSCondition类对象的步骤
1、Lock the condition object.
2、Test a boolean predicate. (This predicate is a boolean flag or other
variable in your code that indicates whether it is safe to perform the
task protected by the condition.)
3、If the boolean predicate is false, call the condition object’s wait or
waitUntilDate: method to block the thread. Upon returning from these
methods, go to step 2 to retest your boolean predicate. (Continue
waiting and retesting the predicate until it is true.)
4、If the boolean predicate is true, perform the task.
5、Optionally update any predicates (or signal any conditions) affected by your task.
6、When your task is done, unlock the condition object.
英语不太好也就不翻译了,大概意思都能看懂

下面看一下方法
//使线程等待
1、- (void)wait //阻塞当前线程,直到收到信号
2、- (BOOL)waitUntilDate:(NSDate *)limit
//阻塞当前线程,直到收到信号或到达指定的时间

///发信号给阻塞的线程
1、- (void)signal //唤醒一个阻塞的线程
2、- (void)broadcast //唤醒所有阻塞的线程

///访问方法
– setName:

– name

NSCondition(转)的更多相关文章

  1. NSCondition的用法,NSCondication实现线程同步,生产者消费问题实现(转载)

    NSCondition的用法 使用NSCondition,实现多线程的同步,即,可实现生产者消费者问题. 基本思路是,首先要创建公用的NSCondition实例.然后: 消费者取得锁,取产品,如果没有 ...

  2. 使用NSCondition实现多线程同步

    iOS中实现多线程技术有非常多方法. 这里说说使用NSCondition实现多线程同步的问题,也就是解决生产者消费者问题(如收发同步等等). 问题流程例如以下: 消费者取得锁,取产品,假设没有,则wa ...

  3. NSCondition用法

    NSCondition用法 使用NSCondition,实现多线程同步...举个列子 消费者跟生产者... 现在传言6s要出了.. 消费者想买6s.现在还没有6s.消费者等待6s生产. 生产了一个产品 ...

  4. NSCondition

    一.NSCondition是对条件变量和互斥量的一个封装,用于线程之间的同步. 其中的互斥量用于保护对条件变量的修改,条件变量变化以信号量的方式通知其它线程实现线程之间的同步. 二.NSConditi ...

  5. iOS线程之——NSCondition

    多线程在各种编程语言中都是难点,很多语言中实现起来很麻烦,objective-c虽然源于c,但其多线程编程却相当简单,可以与java相媲美.这篇文章主要从线程创建与启动.线程的同步与锁.线程的交互.线 ...

  6. 修改版: 小伙,多线程(GCD)看我就够了,骗你没好处!

    多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能.具有这种能力的系 ...

  7. iOS开发系列--并行开发其实很容易

    --多线程开发 概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算.可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行.但是机器码是按顺序执行的, ...

  8. iOS-多线程基础

    进程与线程: 1>   一个应用程序对应一个进程,一个进程帮助程序占据一块存储空间 2>   要想在进程中执行任务,就必须开启线程,一条线程就代表一个任务 3>   一个进程中允许开 ...

  9. 谈谈iOS中的锁

    1 前言 近日工作不是太忙,刚好有时间了解一些其他东西,本来打算今天上午去体检,但是看看天气还是明天再去吧,也有很大一个原因:就是周六没有预约上!闲话少说,这里简单对锁来个简单介绍分享. 2 目录 第 ...

随机推荐

  1. python3-开发进阶Django-debug-toolbar的配置和Django logging的配置

    阅读目录 django-debug-toolbar的配置 Django logging的配置 一.django-debug-toolbar的配置 1.介绍 django-debug-toolbar 是 ...

  2. STL之search

    描述 使用STL中的search函数,判断一个序列是否是另一个序列的子序列. 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. int main() { vector<int> ...

  3. Problem Z: 零起点学算法22——求正弦和余弦

    #include<stdio.h> #include <math.h> int main() { int n; ); double a,b; while(scanf(" ...

  4. Windows python 3 安装OpenCV

    本文适用于想在window下使用python 3 的童鞋,安装openCV 有问题的参考 一.你要确定自己的python版本是3.x,在命令行窗口输入python 本人使用的是python 3.6 二 ...

  5. SweetAlert和MBProgressHUD冲突的解决办法

    解决方法 :   UIView *view = [UIApplication sharedApplication].keyWindow;             NSLog(@" -- &g ...

  6. mac上虚拟机:VMWare Fusion, VirtualBox, Parallels Desktop, CrossOver, Veertu

    作者:Louis Tong链接:https://www.zhihu.com/question/35731328/answer/66127970来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  7. linux如何安装xampp,以及融合dvwa

    1.官网下载:https://www.apachefriends.org/download.html 2.赋予执行权限 [admin@19-56 ~]$ chmod +x xampp-linux-x6 ...

  8. 设计工具-MindManager(思维导图)

    1,百度百科 http://baike.baidu.com/view/30054.htm?from_id=7153629&type=syn&fromtitle=MindManager& ...

  9. How to simplify a PHP code with the help of the façade pattern?

    原文:https://phpenthusiast.com/blog/simplify-your-php-code-with-facade-class ------------------------- ...

  10. HDU 2604 Queuing(矩阵高速幂)

    题目地址:HDU 2604 这题仅仅要推出公式来,构造矩阵就非常easy了.问题是推不出公式来..TAT.. 从递推的思路考虑.用f(n)表示n个人满足条件的结果.假设最后一个是m则前n-1人能够随意 ...