блокировка резьбы вокруг avcodec _открыть/закрыть

У меня есть код С++ -cli, который захватывает видео из папки в opencv с помощью захвата, а затем извлекает кадры с помощью кадра cvquery. Затем я обрабатываю кадры, и как только все кадры обработаны, я выпускаю захват. Он работает нормально, но когда я пытаюсь использовать многопоточность, он выдает предупреждение и не может захватить некоторые видео в папке с предупреждением «недостаточная блокировка потока вокруг avcodec _open/close ()».

//for each video in folder do
{
    capture=cvCreateFileCapture(filename);

    while(1)
    {
        img=cvqueryframe(capture) 

        if !img break;
        ///process img
    }

    cvreleasecapture(&capture);
}

Есть ли способ решить проблему с многопоточностью? Я думал об использовании

while(!capture) 
    capture=cvCreateFileCapture(filename);

но должен быть более эффективный способ, возможно, с помощью блокировки Monitor ::Enter (obj )или блокировки (obj )?

5
задан fmvpsenior 30 August 2012 в 23:50
поделиться