iOS之深入解析保证线程安全的“锁”的使用和性能分析

一、线程安全

  • 在平时的开发中经常使用到多线程,在使用多线程的过程中,难免会遇到资源竞争的问题,那么怎么来避免出现这种问题呢?
  • 当一个线程访问数据的时候,其他的线程不能对其进行访问,直到该线程访问完毕。简单来讲就是在同一时刻,对同一个数据操作的线程只有一个。只有确保了这样,才能使数据不会被其他线程影响。而线程不安全,则是在同一时刻可以有多个线程对该数据进行访问,从而得不到预期的结果。
  • 比如写文件和读文件,当一个线程在写文件的时候,理论上来说,如果这个时候另一个线程来直接读取的话,那么得到的结果可能是无法预料的。
  • 通常使用锁的机制来保证线程安全,即确保同一时刻只有同一个线程来对同一个数据源进行访问。

二、锁的使用

① 互斥锁
  • 互斥锁是一种用于多线程编程中,防止两条线程同时对同一公共资源(例如全局变量)进行读写的机制,该目的是通过将代码切成一个个临界区而达成。
  • 互斥锁主要是@synchronized、NSLock、pthread_mutex。
  • @synchronized
    • @synchronized 是 iOS 中最常见的锁,用法很简单:
	 - (void

猜你喜欢

转载自blog.csdn.net/Forever_wj/article/details/115581992