记录一个问题android下的ucontext协程,因为使用栈上的对象,导致cv::Mat被莫名析构
Posted ahfuzhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录一个问题android下的ucontext协程,因为使用栈上的对象,导致cv::Mat被莫名析构相关的知识,希望对你有一定的参考价值。
工作的流程是这样:某个协程在栈上创建task对象,在task对象内有需要返回的cv::Mat。
然后把task放到另一个线程上去执行,然后切换到别的协程,等到工作线程执行完task后,再唤醒协程。
这时候协程内去访问cv::Mat使用是empty。
同样的代码,task对象不是在栈上创建,而是new出来,一切正常。
暂未找到原因,怀疑与栈的拷贝有关。其实也打印了使用各个阶段的指针的地址,发现地址未发生改变。
以上是关于记录一个问题android下的ucontext协程,因为使用栈上的对象,导致cv::Mat被莫名析构的主要内容,如果未能解决你的问题,请参考以下文章
一种在C语言中用 System V ucontext 实现的协程切换
一种在C语言中用汇编指令和 System V ucontext 支撑实现的协程切换