Swift- 多线程编程Thread

多线程的优缺点

优点:能适当提高程序的执行效率,能适当提高资源利用率(CPU,内存)

缺点:线程越多,CPU在调度线程上的开销就越大,线程之间的通信、多线程的数据共享更复杂

一、NSThread

优缺点:NSThread 比其他两个轻量级,但是需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销

创建方式

1、类方法创建线程并且开始运行线程

缺点:无法对线程进行更详细的设置

 Thread.detachNewThreadSelector(#selector(action), toTarget: self, with: nil)
 Thread.detachNewThread {
            //block形式
        }
2、实例方法创建线程

操作前可以设置线程的优先级,名称等属性

let thread = Thread(target: self, selector: #selector(action2), object: nil)
thread.name = "lxl125z"
thread.threadPriority = 0.5  //设置优先级
thread.start()
3、隐式创建并启动线程
performSelector(inBackground: #selector(action2), with: nil)

线程同步:

1、NSCondition

condition.lock() //加锁

condition.unlock() //解锁

condition.wait() //等待

condition.signal() //唤醒

let condition = NSCondition()
while (true) {
            condition.lock()        //加锁
            if count>0 {
            Thread.sleep(forTimeInterval: 0.1)
             count -= 1
            print("action2执行了",Thread.current,Thread.isMainThread)
            }else{
                break
            }
            condition.unlock()
        }
2、NSLock
3、互斥锁

简化 NSLock的使用

oc中的互斥锁:
@synchronized(self) {
    //需要执行的代码块
}

swift中的互斥锁:
objc_sync_enter(self)
//需要执行的代码块
objc_sync_exit(self)

你可能感兴趣的:(Swift- 多线程编程Thread)