既然GCD中使用dispatch_sync()是不会开启线程的, 那么有什么意义呢?是不是同步对于线程是没有意义的?异步才是有意义的?
     1 
                    
                    fogisland      2015-06-27 16:09:20 +08:00 via iPhone 
                    
                    有些时候必须要把一些动作交给另外一个线程去做,同时当前线程要等待结果返回才能继续往下走。这时候就需要dispatch_sync。多线程不一定非得异步才有意义啊。 
                 | 
            
     2 
                    
                    yahoo21cn      2015-06-27 16:21:33 +08:00    你把GCD关掉,换GMD的协程模式试试 
                 | 
            
     3 
                    
                    miki6180   OP @fogisland 那不就意味这是多条线程的同步, 但是我这样写打印出来的线程的number值是一样的, 也就是说是在同一条线程。 
                - (void)viewDidLoad { [super viewDidLoad]; dispatch_sync(dispatch_queue_create("cn.lovegh", DISPATCH_QUEUE_PRIORITY_DEFAULT), ^{ NSLog(@"%@", [NSThread currentThread]); } ); }。然道它的意思是阻塞当前线程, 那岂不是还要自己开线程, 在哪个线程中再用dispatch_sync()...  | 
            
     4 
                    
                    miki6180   OP @fogisland 代码写错,是这段 
                - (void)viewDidLoad { [super viewDidLoad]; dispatch_sync(dispatch_queue_create("cn.lovegh", DISPATCH_QUEUE_PRIORITY_DEFAULT), ^{ NSLog(@"%@", [NSThread currentThread]); } );  | 
            
     5 
                    
                    xhacker      2015-06-27 16:35:16 +08:00    dispatch_sync 确实基本用不到。只有一个场景,就是你可以用 dispatch queue 代替锁。参见 http://stackoverflow.com/questions/4607125/using-dispatch-sync-in-grand-central-dispatch 。 
                 | 
            
     7 
                    
                    fogisland      2015-06-27 16:44:21 +08:00 via iPhone 
                    
                    @anonysecurity gcd是对线程池的封装,泥这样写,系统很可能就会把新建的gcd分配在当前线程了,因为这样已经满足你的需求了。你如果自己开一个线程,在里面dispatch sync到main queue,就能看到线程是不一样的了。手机打字说不清楚,建议你去了解下gcd和线程的关系就都明白了 
                 | 
            
     8 
                    
                    miki6180   OP @fogisland 嗯, 但是有一点是没错, 它不会新开线程。我看了stackoverflow的大概明白了, 就是用来代替锁, 实现多线程的同步~~~生产者消费者的一种模型~。 
                 | 
            
     9 
                    
                    66450146      2015-06-27 18:54:30 +08:00 
                    
                    一个简单的场景是,把 CoreData 放在了另一个 queue 上运行,操作 CoreData 之后要根据更新后的内容刷新 view 
                 | 
            
     10 
                    
                    elgoog      2015-06-27 20:15:02 +08:00 
                    
                    本帖有一层楼被删了 
                 | 
            
     14 
                    
                    Marfal      2015-06-27 20:37:12 +08:00 
                    
                    我还以为是gong、c、dang。。。 
                 | 
            
     18 
                    
                    ugvfpdcuwfnh      2015-06-27 23:55:44 +08:00 
                    
                    @elgoog  
                怎么发现的(⊙_⊙?)  | 
            
     19 
                    
                    flowfire      2015-06-28 00:38:01 +08:00 
                    
                    .............这标题。。。 
                 | 
            
     20 
                    
                    freed      2015-06-28 00:41:31 +08:00 
                    
                    不止一层..被删了好几层... 
                因为帖子刚发没多久我看了 本来上面有好几层说以为是....... 的回复的....  | 
            
     21 
                    
                    blessme      2015-06-28 01:35:35 +08:00 
                    
                    这标题要小心被系统抓取导致拔网线。 
                 | 
            
     22 
                    
                    HFX3389      2015-06-28 11:33:09 +08:00 
                    
                    
                 | 
            
     23 
                    
                    tao1991123      2015-06-28 12:18:32 +08:00 
                    
                    看到GCD还是以为共chan党的代称,还在想 v2ex啥时候变政治论坛了,进来一看。我想多了 
                 | 
            
     24 
                    
                    xieyudi1990      2015-06-29 04:45:13 +08:00 
                    
                    第一个想到的是共残党. 第二个想到的是最大公约数. 
                 | 
            
     25 
                    
                    rekey      2015-06-29 13:34:35 +08:00 
                    
                    看标题吓尿了。 
                 |