public ConcurrentBlockDecompressor( ICompressor compressor, string pathToFile, string saveToFile, int batchSize = 1024 ) { var workerCount = Environment.ProcessorCount * 5; _chunkSize = 100; _compressor = compressor; _saveToFile = saveToFile; _fileStreamByBatchWriter = new FileStreamByBatchWriter(_saveToFile); _producerConsumerDecompressTask = new ProducerConsumerQueue(workerCount); _producerConsumerWriteTask = new ProducerConsumerQueue(); _gzipActionPerformer = new GzipActionPerformer( _producerConsumerDecompressTask, _producerConsumerWriteTask, _fileStreamByBatchWriter ); _pathToFile = pathToFile; _fileStreamBatchEnumerator = new FileStreamBatchEnumerator(_pathToFile, batchSize); }