boost :: context library已更新到版本v2,更改破坏了我之前依赖boost :: jump_fcontext()的代码
旧的boost :: jump_fcontext()在新的API中不再可用。新的boost :: context v2改变了很多,我无法理解它。提供的例子并没有帮助我。
这是我试图用新的execute_context存档的程序结构的伪代码:
struct myctx
{
int var;
boost::context::execution_context fctx;
myctx()
: var(0), fctx("how to ctor")
{}
static void ctx_func(ctx_data * ptr) {
while(ptr->var++ < 1000) {
ptr->fctx("how to jump into main() myctx ??")
}
}
};
int main()
{
myctx mctx;
while(1)
mctx.fctx("how to jump into ctx_func() ??");
return 0;
}
如何用真正的C ++替换这些字符串?我不明白boost::context::execution_context
我对boost :: context的使用是我将当前上下文保存到myctx中并在无序的情况下切换到多个其他myctx。使用boost :: jump_fcontext,这是相当清楚的。
答案 0 :(得分:0)
为什么不初始化'fctx'?即使它不会编译,因为ctx_data() - ctor(与myctx不同)... 也许你的意思是:
struct myctx
{
int var;
execution_context< myctx * > fctx;
myctx()
: var(0), fctx( myctx::ctx_func)
{}
static execution_context< myctx * > ctx_func(execution_context< myctx * > mctx, ctx_data * ptr) {
while(ptr->var++ < 1000) {
// jump into main()
std::tie(mctx, ptr) = mctx( ptr);
}
return std::move( mctx);
}
};
我不知道你想要传递myctx指针