我在理解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