Example #1
0
        public override void Compress()
        {
            try {
                initializePlan();
                initializeCompressing();

                Thread processThread = new Thread(consumeRawFilePart);
                processThread.Start();
                Thread writeThread = new Thread(writeCompressedParts);
                writeThread.Start();

                using (var reader = new FileStream(m_inputFile, FileMode.Open, FileAccess.Read, FileShare.None, c_blockSize)) {
                    byte[] buffer        = new byte[c_blockSize];
                    int    blockIndex    = 0;
                    int    readByteCount = 0;
                    while ((readByteCount = reader.Read(buffer, 0, c_blockSize)) > 0)
                    {
                        using (MemoryStream memStream = new MemoryStream()) {
                            memStream.Write(buffer, 0, readByteCount);
                            FilePart filePart = new FilePart(memStream.ToArray(), blockIndex);
                            m_rawBlockQueue.Enqueue(filePart);
                        }
                        blockIndex++;
                    }
                }
                writeThread.Join();
            } catch (Exception ex) {
                throw new Exception("Error was occured in compress method");
            }
        }
Example #2
0
 public ThreadPool()
 {
     m_workers = new BlockingFixedQueue <Thread>(MaxThreads);
     for (var i = 0; i < MaxThreads; ++i)
     {
         var worker = new Thread(Worker)
         {
             Name = string.Concat("Worker ", i)
         };
         worker.Start();
         m_workers.Enqueue(worker);
     }
 }