2015-06-18 25 views
0

我尝试在backgroup的顺序执行任务2用下面的代码:异步任务队列不起作用(SWIFT)

var group = dispatch_group_create(); 
dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), { 
      println("start task 1"); 
      NSThread.sleepForTimeInterval(10000); 
      }); 
dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), { 
      println("start task 2"); 
      NSThread.sleepForTimeInterval(10000); 
     }); 


dispatch_group_wait(group, DISPATCH_TIME_FOREVER); 

当运行任务1和任务2在同一时间执行,不inqequence。

我在做什么错?

回答

0

由于全球队列并发队列中,如果你想任务顺序执行,创建串行队列

let serialQueue = dispatch_queue_create("com.test.helloHwc",DISPATCH_QUEUE_SERIAL) 
dispatch_group_async(group,serialQueue, { 
    println("start task 1"); 
    NSThread.sleepForTimeInterval(10); 
}); 
dispatch_group_async(group,serialQueue, { 
    println("start task 2"); 
    NSThread.sleepForTimeInterval(10); 
}); 


dispatch_group_wait(group, DISPATCH_TIME_FOREVER); 

更新与文档

块提交到一个串行队列被执行以FIFO的顺序一次一个。但是,请注意,提交给独立队列的块可能会相对于彼此同时执行。提交给并发队列的块按FIFO先后顺序出队,但如果资源可用,则可同时运行