承接前文,本篇展示以 ReaderWriterLockSlim 實作的同步資料容器,以及外部資料適配器的抽象設計,解決高併發下的資料安全傳輸問題。
namespace Common {
public class SynchronizedWriteData<T> : IDisposable {
private ReaderWriterLockSlim _dataLock = new ReaderWriterLockSlim();
private IReaderWriter<T> _innerData;
public SynchronizedWriteData(IReaderWriter<T> innerData) {
_innerData = innerData;
}
public T Read() {
_dataLock.EnterReadLock();
try { return _innerData.Read(0); }
finally { _dataLock.ExitReadLock(); }
}
public void Add(T instance) {
_dataLock.EnterWriteLock();
try { _innerData.Write(0, instance); }
finally { _dataLock.ExitWriteLock(); }
}
// 其餘 Read/Add/Delete 多載與 Dispose 實作略...
}
}
namespace ExternalDataHandle {
public abstract class ExternalDataAdapter<T> : IDisposable {
protected abstract string ConnectString { get; }
protected abstract void Initialize();
public abstract void Transmit();
protected abstract void ReadFromExternalDevice();
protected abstract void SaveToInternalDevice();
public abstract void Dispose();
}
}
此架構將同步邏輯與資料存取解耦,支援多執行緒同時讀取、單一執行緒寫入,適合大量異構資料遷移場景。