OpenEL GS之深入解析视频图像处理中怎么实现错帧同步

时间:2024-10-05 18:15:35
void AsyncFramework::FirstStepProcess() { LOGCATE("AsyncFramework::FirstStepProcess start"); int index = 0; while (true) { // 等待主线程发来的信号 sem_wait(&first_thread_sem); if(!work_thread_running) break; LOGCATE("AsyncFramework::FirstStepProcess index=%d", index); strcat(work_buffers[index % WORK_THREAD_NUM], "FirstStep "); // 休眠模拟处理耗时 this_thread::sleep_for(chrono::milliseconds(200)); // 处理完成后通知第二个工作线程进行第二步处理 sem_post(&second_thread_sem); index++; } LOGCATE("AsyncFramework::FirstStepProcess end"); } void AsyncFramework::SecondStepProcess() { LOGCATE("AsyncFramework::SecondStepProcess start"); int index = 0; while (true) { // 等待第一个工作线程发来的信号 sem_wait(&second_thread_sem); if(!work_thread_running) break; LOGCATE("AsyncFramework::SecondStepProces index=%d", index); strcat(work_buffers[index % WORK_THREAD_NUM], "SecondStep"); // 休眠模拟处理耗时 this_thread::sleep_for(chrono::milliseconds(200)); // 第二步处理完成后通知主线程结束等待 sem_post(&main_sem); index++; } LOGCATE("AsyncFramework::SecondStepProcess end"); }