多线程安全-iOS开发注意咯!!!
多线程,作为实现软件并发执行的一个重要的方法,也开始具有越来越重要的地位! 正式因为多线程能够在时间片里被CPU快速切换,造就了以下优势 资源利用率更好 程序设计在某些情况下更简单 程序响应更快 但是并不是非常完美,因为多线程常常伴有资源抢夺的问题,作为一个高级开发人员并发编程那是必须要的,同时解决线程安全也成了我们必须要要掌握的基础 原子操作 自旋锁其实就是封装了一个spinlock_t自旋锁 自旋锁:如果共享数据已经有其他线程加锁了,线程会以死循环的方式等待锁,一旦被访问的资源被解锁,则等待资源的线程会立即执行。自旋锁下面还会展开来介绍 互斥锁:如果共享数据已经有其他线程加锁了,线程会进入休眠状态等待锁。一旦被访问的资源被解锁,则等待资源的线程会被唤醒。 下面是自旋锁的实现原理: bool lock = false; // 一开始没有锁上,任何线程都可以申请锁 do { while(test_and_set(&lock); // test_and_set 是一个原子操作 Critical section // 临界区 lock = false; // 相当于释放锁,这样别的...