[英]Queue of 2 background processes
我需要創建2個后台進程的隊列,這些隊列將同步工作。
我嘗試使用此代碼,但沒有得到。 我的錯誤在哪里?
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//block1
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
//block2
});
});
如果我理解您的問題,那么如果您希望塊同步運行,則需要創建一個串行隊列:
dispatch_queue_t queue = dispatch_queue_create("queue-name", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{
// first block
});
dispatch_async(queue, ^{
// second block
});
這兩個塊都將在一些未命名的后台線程上運行,但是它們將同步運行。 第一個塊將在第二個塊開始之前完成執行。
您可能不想使用背景優先級。 該隊列將由默認優先級全局隊列支持,這幾乎可以肯定是您想要的。
您可以在具有同步的單線程中編寫代碼,這些代碼將一個接一個地同步運行。
dispatch_queue_t queue = dispatch_queue_create("queue-name", DISPATCH_QUEUE_SERIAL);
dispatch_sync(queue, ^{
// first block
for (int i = 0; i < 100; i++)
{
NSLog(@"value = %d",i);
sleep(1);
}
NSLog(@"Hi...");
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.