2013-02-28 2 views
0

Я хочу, чтобы 2 потока открывали 1 файл, а затем выполняли некоторые процессы. в деталях, мой файл является .avi видео и im распаковывает кадры из файла. Я извлекаю нечетные нумерованные кадры с 1 потоком и даже пронумерованные кадры с другим потоком.Многопоточные и открывающие файлы в C#

Это важная часть моего кода:

Capture video = new Capture("c:\\5.avi"); 
Image<Bgr, Byte> Imageframe; 
Imageframe = video.QueryFrame(); 

Однако, когда вторая работа нить, и открыть тот же файл (5.avi), или даже другой файл это дает мне это сообщение (не в для создания захвата из c: \ 5.avi) , пожалуйста, сообщите мне, что делать, им новый для программирования нарезания резьбы

Спасибо.

+0

Для этого необходимо применить к нему взаимное исключение, чтобы обеспечить доступ к одному ресурсу только одному потоку, который находится в вашей переменной видео причины. – user1929959

+0

Что значит взаимное исключение? –

+0

В этом случае попробуйте узнать что-то в контексте использования многопоточности в каком-либо приложении. Вы можете начать с Википедии :) – user1929959

ответ

2

Я предлагаю, чтобы один поток (только) прочитал файл и подал два рабочих потока кадрами. Не обязательно единственный способ, но приведет к появлению более чистого кода.

+0

2 чтения тем в то же время важны для меня для ускорения процесса. –

+2

Диск ввода-вывода является узким местом для чтения, а не центрального процессора. Я повторяю; Попросите один поток прочитать файл и обработать обработку двумя рабочими потоками. –

+0

На самом деле, даже если вам удастся получить два потока, взаимодействующих для чтения файла, я, скорее всего, будет медленнее, чем мое предложение; в течение времени, которое требуется для переключения контекста, следующий блок диска, вероятно, повернулся из-под головки чтения диска. –

0

Похоже, что вы можете запустить только один процесс «Захват».

+0

, но я хочу запустить 2 за раз! –

+0

, если есть внутренняя проверка, существует некоторая проверка, чтобы гарантировать, что выполняется только один процесс Capture, вы можете немного с этим справиться. – ChrisBint

+0

как что? пожалуйста, посоветуй мне –

Смежные вопросы