public SignatureWorker(FileInfo inputFileInfo, long blockSize) { if (inputFileInfo == null) { throw new ArgumentNullException("inputFileInfo"); } InputFileInfo = inputFileInfo; if (blockSize == 0) { throw new ArgumentException("Размер блока должен быть больше 0", "blockSize"); } BlockSize = blockSize; _threadForHash = GetCountThreadForHash(); //with small blocks too many memory needed long denum = BlockSize > 512 ? BlockSize : 512; _maxQueuePerThread = _maxBufferSize / denum; if (_maxQueuePerThread == 0) { _maxQueuePerThread = 1; } _hashProducersConsumers = new QueueWithLock <SHA256Block>(_maxQueuePerThread); }
public GZipDecompressor(FileInfo inFileInfo, FileInfo outFileInfo) : base(inFileInfo, outFileInfo) { _numReadThreads = GetNumReadThreads(); _decompressedBlocksProd = new QueueWithLock <DataBlock> [_numReadThreads]; for (int i = 0; i < _decompressedBlocksProd.Length; i++) { _decompressedBlocksProd[i] = new QueueWithLock <DataBlock>(100); } }
public GZipCompressor(FileInfo inFileInfo, FileInfo outFileInfo) : base(inFileInfo, outFileInfo) { _numReadThreads = GetNumReadThreads(); _compressedBlocksProd = new QueueWithLock <DataBlock> [_numReadThreads]; int producerMaxSize = 1024 * 1024 * 100 / _blockSize / _compressedBlocksProd.Length; if (producerMaxSize == 0) { producerMaxSize = 1; } for (int i = 0; i < _compressedBlocksProd.Length; i++) { _compressedBlocksProd[i] = new QueueWithLock <DataBlock>(producerMaxSize); } }