以上是讀者寫入問題的解決方案,寫者比讀者有偏好。
假設最初1000個閱讀器開始執行代碼來讀取數據(假設讀取的數據代碼很大,每個線程需要1秒),那麼1個寫入器會嘗試寫入數據。所以作者必須等待1000位讀者先完成(即1000秒)。
例如,在一個作家更新時間和許多讀者閱讀時間的應用程序中,作者必須等待1000秒,這是很大的。
是否有解決方案,當作家試圖寫作時,所有讀者都將被搶先,直到作者完成其任務?
以上是讀者寫入問題的解決方案,寫者比讀者有偏好。
假設最初1000個閱讀器開始執行代碼來讀取數據(假設讀取的數據代碼很大,每個線程需要1秒),那麼1個寫入器會嘗試寫入數據。所以作者必須等待1000位讀者先完成(即1000秒)。
例如,在一個作家更新時間和許多讀者閱讀時間的應用程序中,作者必須等待1000秒,這是很大的。
是否有解決方案,當作家試圖寫作時,所有讀者都將被搶先,直到作者完成其任務?
「搶佔」究竟意味着什麼?你不能把它們從CPU中拿走,因爲這不能解決問題。讀者期望他們閱讀的狀態穩定。如果你「暫停」閱讀器,拿起寫鎖,修改狀態,釋放鎖並恢復閱讀器,他們將看到改變狀態和故障。
讀鎖定的目的是爲了確保讀寫器執行時數據不會發生變化。如果你刪除了這個屬性,這個鎖定策略就沒有意義了。
無論你解釋的是正確的,這是我的疑問。如果所有的讀者都在執行,那麼作者來了,必須寫(不應該等待他)什麼需要做?因爲如果作家等待1個閱讀器的話,但是如果閱讀10000個閱讀器,那顯然它會延誤作家。 – Suri
哇!這篇文章確實需要重新格式化。然而,我無法理解它。請花一點時間,並刪除非代碼文本上的縮進。 – Gray
我已格式化問題 – Suri