我在理解GCD時遇到了問題。我需要使用dispatch_async來產生函數put_values(),它將在無限循環中將值放入緩衝區。 Get_values()將在無限循環中移除。因此,我必須同時運行它們,而無需查看是否實現了我的信號量以便正確等待。下面的代碼做到這一點(異步運行它們 )? 謝謝!dispatch_async()in c
dispatch_queue_t producer = dispatch_queue_create("producer", NULL);
dispatch_queue_t consumer = dispatch_queue_create("consumer", NULL);
dispatch_async(producer,
^{
put_values();
});
dispatch_async(consumer,
^{
get_values();
});
dispatch_main();
考慮到我在問題中給出的細節,爲什麼每次寫入都必須是異步的,爲什麼讀取必須是同步的。 – pnizzle
寫入也可能是同步的,但是會給你買什麼?另一個寫法可能會在之後立即出現,並使其無效。相反,如果您要讀取值,則需要先完成寫入操作,否則您將讀取陳舊的數據。 – jkh