#import "ViewController.h" @interface ViewController () @property (nonatomic , strong) NSString *someString; @end @implementation ViewController { dispatch_queue_t _syncQueue; } - (void)viewDidLoad { [super viewDidLoad]; /** * GCD简单高效的形式为代码加锁 * */ //串行同步队列 将读取操做和写入操做都安排在同一个队列里,便可保证数据同步。 _syncQueue = dispatch_queue_create("com.google.com", NULL); //并发队列 _syncQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); //GCD功能“阻断器,栅栏” //在队列中栅栏必须单独执行 void dispatch_barrier_async(dispatch_queue_t queue,dispatch_block_t block); void dispatch_barrier_sync(dispatch_queue_t queue,dispatch_block_t block); } //思路:把设置操做和获取操做都安排在序列化的队列执行 -(NSString *)someString{ __block NSString *localSomeString; dispatch_sync(_syncQueue, ^{ localSomeString = _someString; }); return localSomeString; } -(void)setsomeString:(NSString *)someString{ //同步派发 dispatch_sync(_syncQueue, ^{ _someString = someString; }); //异步派发 dispatch_async(_syncQueue, ^{ _someString = someString; }); //栅栏 dispatch_barrier_async(_syncQueue, ^{ _someString = someString; }); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end