线程安全且高吞吐量的模型,意思就是多读单写的的意思,来自《高性能iOS应用开发》一书中4.5.4节,swift实现如下:
1、定义一个并发线程:
let stateQueue: DispatchQueue = DispatchQueue(label: "com.taskOperation.stateQueue", attributes: .concurrent)
2、get 方法实现:
return stateQueue.sync { _state }
3、set方法实现
stateQueue.sync(flags: .barrier) { self._state = newValue }
注意点:
1、将stateQueue.sync用于不修改状态的操作,如get方法
2、将stateQueue.sync(flags: .barrier) 或 stateQueue.async(flags: .barrier)用于可能修改状态的操作,如set方法
3、barrier 允许在并发队列中创建同步点,在barrier前提交的任务全部执行完成后会执行barrier中提交的任务,之后在执行barrier后提交的任务,保证在线程安全的前提下实现多次读取数据,单次写入数据。
网友评论