从一个角度看,任何数量的读者都可以安全地访问一个资源,因为他们不会对内容。一旦作者输入等式,情况就变得更加复杂。如果一个线程在写,而其他线程在读,那么读者可能得不到正确的信息。他们可能只收到部分更改,或者可能看到过时的信息并认为它是准确的多个编写器也可能会产生问题。对同一内容的同时更改可能会覆盖它并产生其他错误。在读写器问题下,程序员必须决定读写器是否具有优先级,以及如何处理访问。可以为读写器分配优先级,或者系统可以在先到先服务的基础上分配访问权限。第三种解决方案可以避免长时间等待,但也可能带来自身的问题在读卡器具有优先权的解决方案中,系统假定当访问可用时,任何请求访问的读卡器都应首先被允许。这意味着任何想要访问资源的写入程序都可能需要等待。相反,系统可能会假设,由于写入程序需要进行可能会影响读卡器的更改,因此在读写器问题下应给予优先权。当读卡器处理完资源时,编写器可以跳入进行更改。这不仅适用于用户操作(如试图保存文档),还适用于计算机内部保持系统运行的内部进程另一个选项允许读写器问题平衡双方的需求,允许每个处理线程在到达时进行访问。这可以防止写入程序在不让读卡器等待的情况下进行覆盖彼此或混淆读卡器的更改,或者强迫写作者在读写结束时等待。这样的优先级可以内置在软件程序或计算机的内存访问控制中。如果用户对编程感到满意并且系统允许的话,他们可以进行更改。
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!