예제 #1
0
 public Pool(ITask task)
 {
     _task        = task;
     _errors      = new BlockingSortQueue <Exception>(Environment.ProcessorCount);
     _threads     = new List <Thread>();
     _tokenSource = new CancellationTokenSource();
     _token       = _tokenSource.Token;
 }
예제 #2
0
 public void Open(string path, ManualResetEvent endReadEvent)
 {
     _tokenSource = new CancellationTokenSource();
     _token       = _tokenSource.Token;
     _queue       = new BlockingSortQueue <IChunk>(10, new ChunkComparer());
     _endEvent    = endReadEvent;
     _worker      = new Thread(() => FileReader(path))
     {
         IsBackground = true
     };
     _worker.Start();
 }
예제 #3
0
 public void Open(string path, ManualResetEvent endWriteEvent)
 {
     if (endWriteEvent == null)
     {
         throw new ArgumentNullException("Ссылка на объект endWriteEvent не указывает на экземпляр объекта. Функция FileBlockWriter.Open");
     }
     _tokenSource = new CancellationTokenSource();
     _token       = _tokenSource.Token;
     _queue       = new BlockingSortQueue <IChunk>(Environment.ProcessorCount * 20, new ChunkComparer());
     _endEvent    = endWriteEvent;
     _worker      = new Thread(() => FileWriter(path))
     {
         IsBackground = true
     };
     _worker.Start();
 }