簡體   English   中英

2個后台進程的隊列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM