在使用 scoped_lock 锁定两个互斥锁后,我需要从队列中执行提取的任务,问题是将任务从队列交换到另一个,然后执行它。到目前为止,这是我的起点
std::packaged_task<void(Job)> task;
{
std::scoped_lock scopedLock(w_mutex, r_mutex);
const std::packaged_task<void(Job)>& top_task = waitingJobsQueue.top();
waitingJobsQueue.pop();
runningJobsQueue.push(task);
}
task();
但我无法将任务保存到变量中以便以后执行。