C 不等待POSIX的生产者-消费者并发

C 不等待POSIX的生产者-消费者并发,c,concurrency,posix,C,Concurrency,Posix,我有一个特定的资源和两个线程,一个是生产者,另一个是消费者。 生产者每间隔一次更新资源,更新需要一些时间,我不希望消费者等待。我希望他在制作人更新时使用资源的旧值。 如何同步两个线程而不让使用者等待在更新/读取共享资源时,必须锁定共享资源。我想消费者可以将资源复制到自己的缓冲区中?或者这会花费同样长的时间吗?你可以有一个原子指针,消费者通过它读取生产者生产的东西。生产者生成新数据后,将原子指针的值改为指向该新数据。现在等待的原因是什么?POSIX线程互斥和try lock函数?参见示例及其答案。

我有一个特定的资源和两个线程,一个是生产者,另一个是消费者。 生产者每间隔一次更新资源,更新需要一些时间,我不希望消费者等待。我希望他在制作人更新时使用资源的旧值。
如何同步两个线程而不让使用者等待

在更新/读取共享资源时,必须锁定共享资源。我想消费者可以将资源复制到自己的缓冲区中?或者这会花费同样长的时间吗?

你可以有一个原子指针,消费者通过它读取生产者生产的东西。生产者生成新数据后,将原子指针的值改为指向该新数据。

现在等待的原因是什么?POSIX线程互斥和try lock函数?参见示例及其答案。然后使用者尝试定期轮询资源,如果资源未能锁定,互斥锁将继续运行,就像什么都没有发生一样。这个问题是否与spinlock有关?取决于您的设置。你能创建一个新的资源并在完成后复制它吗?如果没有,我们需要了解更多有关设置的信息