无法同时运行线程

时间:2017-11-17 12:41:14

标签: c++ linux multithreading thread-sleep

概要我正在执行一个简单的程序,我在其中实例化然后分离5个线程,我传递的函数读取视频流,并写入视频文件。 现在的问题是,写入的视频文件跳过太多帧。我希望所有这些线程同时运行并从流数据生成视频文件而不跳过任何帧。 问题如何确定这些线程的优先级,以便它们始终处于活动状态? 操作系统 Ubuntu 16.04

void myfunction( string  stream, string video_name)
{
    cv::VideoCapture cap(stream);//read stream
    Mat frame;
    int frame_width = cap.get(CV_CAP_PROP_FRAME_WIDTH);
    int frame_height = cap.get(CV_CAP_PROP_FRAME_HEIGHT);

    VideoWriter video(video_name,CV_FOURCC('X','V','I','D'),10, Size(frame_width,frame_height)); 

    while(1){ 
        cap >> frame; //capture frame
        video.write(frame); 
    }

}//end of myfunction

void main()
    {
        std::thread t1 (myfunction,my_stream_link, "myoutput1.avi");
        //t1.detach();
        std::thread t2 (myfunction,my_stream_link, "myoutput2.avi");
        //t2.detach();
        std::thread t3 (myfunction,my_stream_link, "myoutput3.avi");
        //t3.detach();
        std::thread t4 (myfunction,my_stream_link, "myoutput4.avi");
        //t4.detach();
        std::thread t5 (myfunction,my_stream_link, "myoutput5.avi");
        //t5.detach();
        t1.join();
        t2.join();
        t3.join();
        t4.join();
        t5.join();

}//end of main

0 个答案:

没有答案