static void Main() { var bsw = new BSW(2); var random = new Random(); var tasks = new Task[2]; for (var i = 0; i < 20; i++) { var regNum = random.Next(10) % 2; var value = random.Next(100); tasks[regNum] = Task.Run(() => { Console.WriteLine("write {0} in register #{1}", value, regNum); bsw.Update(regNum, value); }); if (random.Next(100) % 3 == 0) { Task.Run(() => { Console.WriteLine("read from #{0} task: ", regNum, string.Join(", ", bsw.Scan(regNum, false))); }); } if (i % 2 == 1) { Task.WaitAll(tasks); } } Console.WriteLine("----------------------------"); for (var i = 0; i < 2; i++) { Console.WriteLine("register #{0} write-log:", i); foreach (var write in bsw.logWrite[i]) { Console.WriteLine(write); } Console.WriteLine("----------------------------"); } Console.WriteLine("read-log:"); foreach (var read in bsw.logRead) { Console.Write("[{0}, ", read.Key); Console.WriteLine("(" + string.Join(", ", read.Value) + ")]"); } Console.WriteLine("----------------------------"); }
public DeduplicateController(string algorithm, IStorage storage, Action <ProgressInfo, string> UpdateProgress = null) { _storage = storage; _fileProgress = new ProgressInfo(); _bytesProgress = new ProgressInfo(); _UpdateProgress = UpdateProgress; IDeduplicationAlgorithm alg; switch (algorithm) { case "BSW": alg = new BSW(540, 539, 512, UpdateProgress); break; case "TTTD": alg = new TTTD(512, 256, 460, 2800, UpdateProgress); break; case "OTTTD": alg = new OTTTD(512, 256, 460, 2800, UpdateProgress); break; case "OTTTDS": alg = new OTTTDS(512, 256, 460, 2800, 1900, UpdateProgress); break; case "BFBC": alg = new BFBC(460, 2800, UpdateProgress); break; default: alg = new BSW(540, 539, 512, UpdateProgress); break; } _algorithm = alg; }