gpt4 book ai didi

c++ - boost 中的协程局部变量

转载 作者:行者123 更新时间:2023-11-30 02:36:45 31 4
gpt4 key购买 nike

我正在搜索类似于线程局部变量的东西,但用于 boost::corotine(实际上我使用 boost:asio::spawn)。考虑以下代码:

void coroutine_work(boost::asio::yield_context yield) {
async_foo( yield );
some_function();
}
void some_function() {
fprintf(log_fd, "%s Some function called", the_magic_request_id);
}

我想在初始化请求时将此 the_magic_request_id 设置为某个值,这将用作“当前请求 ID”。

如果没有这个,我必须将 the_magic_request_id 传递给每个函数和每个在项目中进行登录的模块。 some_function 只是一个例子,实际上我有很多类,它们做不同的工作,但它们都需要 yield_contextthe_magic_request_id 才能创建一个实例。我想简化这些类的接口(interface)。

可能可以设置“on_sleep”和“on_resume” Hook ,这将设置一个全局变量?或者 boost::coroutine 已经有了一些现成的用户机制?在文档中没有找到有用的东西。

最佳答案

除了使用 boost.coroutine (boost::asio::yield_context) 你可以使用 boost.fiber (user-land threads,boost::fibers::asio::yield_context)。 boost.fiber 支持 fiber_specific_ptr(相当于 boost.thread 的 thread_specific_ptr)。

文档:http://olk.github.io/libs/fiber/doc/html/index.html

关于c++ - boost 中的协程局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32380537/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com