gpt4 book ai didi

c - 读写器 : one reader at a time, 和写入器优先级

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:04 26 4
gpt4 key购买 nike

如何实现 Reader Writer 问题,一次只允许一个 reader,并且只有在没有 writer 想要修改共享结构的情况下?

Reader:
wait(mutex)
wait(w)

// Read

signal(w)
signal(mutex)


Writer:
wait(w)
wait(mutex)

// Write

signal(w)
signal(mutex)

这个解决方案有意义吗?

最佳答案

线程优先级在这里是你的 friend ,如果你对它很严格,那么 PREEMPT_RT 内核补丁集也是如此。让作者优先于读者。

我假设您有两个信号量:a) 保护对结构的访问(互斥锁),以及 b) 标记结构已更新 (w)。在这种情况下,你不需要在 writer 中等待 w,也不需要在 reader 中发出 w 信号。 reader应该等待w,然后等待mutex,read,然后post mutex。 writer 应该等待 mutex,写入,然后发出 mutex 和 w 信号。

写入线程的优先级和 PREEMPT_RT 内核(解决了优先级倒置问题)意味着无论读取器在做什么,写入器都会尽快获得互斥量(实际上读取器的优先级会暂时上升到确保它尽快到达发出互斥信号的点。

关于c - 读写器 : one reader at a time, 和写入器优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47930261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com