コード例 #1
0
    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("----------------------------");
    }
コード例 #2
0
        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;
        }