问题标签 [boost-context]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4684 浏览

c++ - 提升上下文类

我发现 boost 有一个名为 context 的类,用于上下文切换,对吧?

我尝试用谷歌搜索,但没有找到任何文档或示例。我只是想知道是否有人可以提供一些信息。

0 投票
1 回答
3424 浏览

c++ - 提升上下文库

在 Boost 的最新版本中,出现了新的库Context

阅读文档后,我了解了它的作用,但几乎看不到用例。使用这个库有什么好处?您可以推荐哪些任务使用它?

0 投票
1 回答
538 浏览

c++ - Boost::Context 是否适用于 iOS?

我正在尝试为 iOS 应用程序构建 boost::context。我尝试按照 boost 网站上的说明进行操作,但我发现它们有点复杂。因此,我将 /boost/context 目录和任何其他标题的 xcode 要求复制到我的 xcode 项目中。

现在,我想弄清楚我应该构建哪些源文件。

我从提供的来源中选择: http:
//svn.boost.org/svn/boost/trunk/libs/context/src/asm/

如果有的话,哪些文件是正确的?

0 投票
1 回答
909 浏览

c++ - arm64 的 boost::context?

我正在尝试boost::context为 iOS 编译(armv7、armv7s、arm64):

错误

jump_arm_aapcs_macho_gas.S

如果我删除 arm64,并将架构设置为仅 armv7,它会编译,所以代码应该没问题。

有没有办法让它为 arm64 编译?

0 投票
1 回答
613 浏览

c++ - Boost ASIO/Coroutines:尝试使用 boost asio 和协程编写回显服务器,但行为不一致

当有许多套接字被打开时,我似乎误解了 Windows 如何在 TIME_WAIT 中处理套接字。如果太多人在 TIME_WAIT 中闲逛,那只是错误。Linux 清理旧的连接并成功(至少在我的机器上,不确定记录在哪里)。

我正在尝试编写一个基于协程的回显服务器,但它的行为似乎有点随机。我显然错过了一些东西。谁能告诉我我的方法是否错误,如果是,我错过了什么?

更新:在 linux (Ubuntu 14.04/gcc 4.8/boost 1.56) 上对此进行了测试,一切似乎都很好。Client Exception: Only one usage of each socket address (protocol/network address/port) is normally permitted在 Windows 上,客户端有时会开始抛出异常 ( )。其他时候运行良好。

更新二:我认为我的代码有问题,但似乎更多的是我对 Windows 网络的理解的问题。看来,当套接字在 Windows 上处于 TIME_WAIT 时,即使请求的新套接字超过某个限制,它也会保持不变,在 Linux 上,如果有太多的挂起,当请求新套接字时它们会被丢弃。

0 投票
1 回答
968 浏览

c++ - 使 thread_local 变量完全易失

我正在开发一个使用用户级上下文切换(使用 Boost::Context)的运行时库,并且在使用thread_level变量时遇到了麻烦。考虑以下(简化的)代码:

由于对变量有两次访问,thread_local因此编译器将 main 函数转换为以下几行(与汇编相反):

这似乎是一种合法的优化,因为volatile的值tli没有被缓存在寄存器中。但是volatile的地址tli实际上被缓存了,而不是在第 2 部分从内存中读取。

这就是问题所在:在用户级上下文切换之后,执行第 1 部分的线程转到其他地方。第 2 部分然后被其他线程拾取,该线程获取先前的堆栈并注册状态。但是现在正在执行第 2 部分的线程读取tli属于线程 1 的值。

我试图找出一种方法来防止编译器缓存线程局部变量的地址,并且volatile还不够深入。是否有任何技巧(最好是标准的,可能是特定于 GCC 的)来防止缓存线程局部变量的地址?

0 投票
2 回答
693 浏览

c++ - Boost:单线程 IO 服务

在我的应用程序中,我将收到我想按优先顺序异步处理的各种事件。

我可以用 a 来做到这一点boost::asio::io_service,但我的应用程序是单线程的。我不想为锁付钱,mallocs你可能需要一个多线程程序(性能成本对我来说真的很重要)。我基本上是在寻找一个boost::asio::io_service为单线程执行而编写的。

我很确定我可以自己使用 实现这个boost::coroutine,但在我这样做之前,是否boost::asio::io_service已经存在为单线程执行编写的类似 a 的东西?我已经扫描了 boost 库的列表,但没有什么特别突出的

0 投票
2 回答
183 浏览

c++ - 如何在 Boehm GC 中使用 Boost.Coroutine?

Boost.Coroutine 分配自己的调用堆栈。Boehm GC 是否将这些堆栈上的指针视为根,如果不是,我怎样才能做到这一点?在上下文切换到协程后,Boehm 终止程序。

0 投票
1 回答
473 浏览

c++ - Boost 1.57 Boost.Context fcontext_t 资源管理

一些上下文

在 Boost 1.57 中f_context&make_fcontext看起来像这样

我应该如何管理返回的资源make_fcontext()

我已经阅读了文档,在 IRC 上询问并查看了示例,但找不到任何东西。是否需要释放/删除/关闭此资源?

0 投票
2 回答
977 浏览

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

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

我想在the_magic_request_id初始化请求时将其设置为某个值,这将类似于“当前请求 ID”。

没有这个,我必须传递the_magic_request_id给每个功能和每个登录项目的模块。some_function只是一个例子,实际上我有很多类,它们做不同的工作,但它们都需要yield_context并且the_magic_request_id为了创建一个实例。我想简化这些类的接口。

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