NSCondition讲解

作者: 谌文 | 来源:发表于2020-01-17 00:18 被阅读0次

1.定义

官方文档:The NSCondition class implements a condition variable whose semantics follow those used for POSIX-style conditions. A condition object acts as both a lock and a checkpoint in a given thread. The lock protects your code while it tests the condition and performs the task triggered by the condition. The checkpoint behavior requires that the condition be true before the thread proceeds with its task. While the condition is not true, the thread blocks. It remains blocked until another thread signals the condition object.

NSCondition 的对象实际上作为一个锁和一个线程检查器:锁主要为了当检测条件时保护数据源,执行条件引发的任务;线程检查器主要是根据条件决定是否继续运行线程,即线程是否被阻塞。

2.使用

NSConditon *condition =[ [NSCondition alloc]]init;
[condition lock];//一般用于多线程同时访问、修改同一个数据源,
保证在同一时间内数据源只被访问
、修改一次,其他线程的命令需要在lock 外等待,只到unlock ,才可访问

[condition unlock];//与lock 同时使用

[condition wait];//让当前线程处于等待状态

[condition signal];//CPU发信号告诉线程不用在等待,可以继续执行

有些情况需要协调线程之间的执行。例如,一个线程可能需要等待其他线程的返回结果。NSCondition可以原子性的释放锁,从而使得其他等待的线程可以获取锁,而初始的线程继续等待。
一个线程会等待释放锁的条件变量。另一个线程会统治者变量释放该锁,并唤醒等待中的线程。
使用NSCondition解决标准的生产者-消费者问题。例子如下

相关文章

  • iOS NSCondition详解

    iOS NSCondition讲解 1.定义 官方文档:The NSCondition class impleme...

  • NSCondition讲解

    1.定义 官方文档:The NSCondition class implements a condition va...

  • iOS 锁 部分二

    主要讲解NSLock/NSCondition/NSRecursiveLock/锁的基本用法 常见锁的分类: 自旋锁...

  • 条件锁

    一、NSCondition 与 NSConditionLock 1、NSCondition 需要外部定义条件变...

  • iOS同步锁小探

    我测试的iOS同步锁包括@synchronsized、NSLock、NSCondition、NSCondition...

  • NSCondition

    NSCondition 是一种特殊类型的锁,通过它可以实现不同线程的调度。一个线程被某一个条件所阻塞,直到另一个线...

  • 线程锁

    探讨iOS开发中各种锁使用NSCondition实现多线程同步 NSCondition是线程同步, 阻塞线程。 取...

  • NSCondition、NSConditionLock

    一,NSCondition 1,简介: NSCondition 条件锁,顾名思义,就是满足某些条件才会开锁。NSC...

  • swift 使用NSCondition自定义实现Dispatch

    材料 NSCondition 条件锁

  • iOS-锁-NSCondition&NSConditionLoc

    NSCondition 条件锁,顾名思义,就是满足某些条件才会开锁。NSCondition,可以确保线程仅在满足特...

网友评论

    本文标题:NSCondition讲解

    本文链接:https://www.haomeiwen.com/subject/olyzactx.html