当多个线程同时访问一条数据的时候,会发生该数据产生数据的获取与操作发生不可预知的后果,解决这种多条线程访问同一条数据的方法是添加锁。
在iOS中有两种添加锁的方式,这种锁也叫互斥锁,指在A线程访问该数据的时候,B线程不能够去访问该数据,有@synchornize、NSLock 两种方式。
@synchornize比较简单,直接使用即可我们来看下代码,有一种场景,在用户进行售票的时候,有三个售货员同时卖票,总共有100张票,三个售票员代表了三条线程,100张票代表了需要操作以及访问的对象。使用@synchornize包含了需要多条线程访问的代码段即可。
NSLock为苹果提供的互斥锁的对象类型,以下代码打开注释就可以达到多条线程操作同一条数据时,数据的读写顺序在多线程的情况下是可控的,是顺序进行读写操作的。