1
)因为不同的线程同时执行任务,同时访问统一资源。如果异步操作要保证线程安全等问题, 尽量使用GCD(有些函数默认就是安全的)
2
)
1> @synchronized(xx) {...}
互斥锁
2> NSLock
同步锁
3> dispatch_barrior_async
作用是在并行队列中,等待前面两个操作并行操作完成
4> dispatch_semaphore_wait
等待信号:等待有线程结束之后会增加一个信号才继续执行