我認爲,標籤C++是一個錯誤?
好了,到了話題:
我可以想像從你提供給我們,因爲這一個接口...
的iDevice:這個界面甚至可以空接口
設備:
- 必須實現的iDevice接口,
- 構造消耗IWriteScheduler instannce,
- 必須是線程明年OPS安全,
- 方法打開(字符串路徑),
- meth OD創建(字符串路徑),
- 方法讀(出字節[]緩衝液,INT attempt_read_n),
- 方法寫(在字節[]緩衝液),
- 方法關閉(),
- 裝置將放置鎖定周圍的所有公共方法,
- 所有方法將可能阻塞,
現在IWriteScheduler:
- 任務WriteAsync(i設備裝置,INT尺寸,動作writing_task)
設備行爲:
- 設備中的寫操作是要創建具有操作 的動作把數據寫入到一個文件中,
- 調用IWriteScheduler的一個實例: IWriteScheduler.WriteAsync(此,41561,動作),然後就可以等待,
- 或設備可以返回任務回寫操作的調用者, 讓它決定是否等待是合適的,
- 這是所有,
WriteScheduler:
- 將實施IWriteScheduler,
- 有可能對WriteAsync操作的鎖,
- 私人類DevicesData {IDevice,total_bytes,pending_writes,total_writes,任務last_task} 初始last_task必須task_completed,可以在之下創建老年人。淨版本,
- 必須實現的字典,
- 虛擬WriteAsync方法,默認的實現將是 循環賽, 是什麼意思,在BlockingWrite方法,調度將根據辭典鍵的iDevice更新 正確DeviceData並用last_task的DeviceData的 開始通過鏈接基於ContinueWith下一個,
- 簡單任務的鏈接是要確保循環調度,
其他調度方法只需從WriteScheduler繼承,覆蓋:虛擬任務WriteAsync(IDevice設備,int大小,動作writing_task);
任務鏈允許甚至延遲寫操作和更多的技巧。
對於scheduiling基於對pending_writes,total_writes和TOTAL_BYTES,也有很多的方式來安排和建立具體的規則,這樣的數據結構可以處理:
- 有可能是每秒寫入,
- 有可能是每秒字節數,
- 這些可以幫助保持硬盤燒壞:),
- 都可以用數據結構,通過插入與 任務的Thread.Sleep什麼工作來處理,但竟被d是可怕的:),
- 一個更好的解決方案是延遲的Thread.Timer將在DeviceData 之內的Thread.Timer和一個寫入任務隊列。
我希望這是有幫助的,我對接口的實現和一些想法調度方案中提供的分析...
/IP/
我要去猜他們期望你以合理公正的方式在各個設備上分割寫入內容? –