示例#1
0
        public void MultipleThreadsParallelArchiver()
        {
            var cancellation  = new Cancellation();
            var finishedEvent = new AutoResetEvent(false);

            UseDefaultConfiguration(defaultConfiguration =>
            {
                UseDifferentBufferSizes(defaultConfiguration, bufferSize =>
                {
                    var parallelCompressor = new ParallelCompressor(
                        defaultConfiguration.CompressingFile,
                        defaultConfiguration.CompressedFile,
                        1 * 10,
                        bufferSize);
                    UseMeasure((stopMeasure) =>
                    {
                        parallelCompressor.Process(() => { stopMeasure(); finishedEvent.Set(); }, cancellation);
                    }, defaultConfiguration.CompressingFile);

                    finishedEvent.WaitOne();
                });

                var parallelDecompressor = new ParallelDecompressor(
                    defaultConfiguration.DecompressingFile,
                    defaultConfiguration.DecompressedFile);
                Console.WriteLine();
                UseMeasure((stopMeasure) =>
                {
                    parallelDecompressor.Process(() => { stopMeasure(); finishedEvent.Set(); }, cancellation);
                }, defaultConfiguration.DecompressingFile);
                finishedEvent.WaitOne();

                CompareMd5(defaultConfiguration.CompressingFile, defaultConfiguration.DecompressedFile);
            });
        }
示例#2
0
        public void MultipleThreadsBlockedParallelCompressor()
        {
            UseDefaultConfiguration(defaultConfiguration =>
            {
                UseDifferentBufferSizes(defaultConfiguration, bufferSize =>
                {
                    var pc = new ParallelCompressor(
                        defaultConfiguration.CompressingFile,
                        defaultConfiguration.CompressedFile,
                        1 * 10, bufferSize);

                    UseMeasure(stopMeasure =>
                    {
                        pc.Process(() => { stopMeasure(); },
                                   new Cancellation());
                    }, defaultConfiguration.CompressingFile);
                });
            });
        }