工作的流程是这样:某个协程在栈上创建task对象,在task对象内有需要返回的cv::Mat。 然后把task放到另一个线程上去执行,然后切换到别的协程,等到工作线程执行完task后,再唤醒协程。 这时候协程内去访问cv::Mat使用是empty。
同样的代码,task对象不是在栈上创建,而是new出来,一切正常。
暂未找到原因,怀疑与栈的拷贝有关。其实也打印了使用各个阶段的指针的地址,发现地址未发生改变。