问题标签 [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.
c++ - 提升上下文类
我发现 boost 有一个名为 context 的类,用于上下文切换,对吧?
我尝试用谷歌搜索,但没有找到任何文档或示例。我只是想知道是否有人可以提供一些信息。
c++ - 提升上下文库
在 Boost 的最新版本中,出现了新的库Context。
阅读文档后,我了解了它的作用,但几乎看不到用例。使用这个库有什么好处?您可以推荐哪些任务使用它?
c++ - Boost::Context 是否适用于 iOS?
我正在尝试为 iOS 应用程序构建 boost::context。我尝试按照 boost 网站上的说明进行操作,但我发现它们有点复杂。因此,我将 /boost/context 目录和任何其他标题的 xcode 要求复制到我的 xcode 项目中。
现在,我想弄清楚我应该构建哪些源文件。
我从提供的来源中选择: http:
//svn.boost.org/svn/boost/trunk/libs/context/src/asm/
如果有的话,哪些文件是正确的?
c++ - arm64 的 boost::context?
我正在尝试boost::context
为 iOS 编译(armv7、armv7s、arm64):
错误
jump_arm_aapcs_macho_gas.S
如果我删除 arm64,并将架构设置为仅 armv7,它会编译,所以代码应该没问题。
有没有办法让它为 arm64 编译?
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 上,如果有太多的挂起,当请求新套接字时它们会被丢弃。
c++ - 使 thread_local 变量完全易失
我正在开发一个使用用户级上下文切换(使用 Boost::Context)的运行时库,并且在使用thread_level
变量时遇到了麻烦。考虑以下(简化的)代码:
由于对变量有两次访问,thread_local
因此编译器将 main 函数转换为以下几行(与汇编相反):
这似乎是一种合法的优化,因为volatile的值tli
没有被缓存在寄存器中。但是volatile的地址tli
实际上被缓存了,而不是在第 2 部分从内存中读取。
这就是问题所在:在用户级上下文切换之后,执行第 1 部分的线程转到其他地方。第 2 部分然后被其他线程拾取,该线程获取先前的堆栈并注册状态。但是现在正在执行第 2 部分的线程读取tli
属于线程 1 的值。
我试图找出一种方法来防止编译器缓存线程局部变量的地址,并且volatile
还不够深入。是否有任何技巧(最好是标准的,可能是特定于 GCC 的)来防止缓存线程局部变量的地址?
c++ - Boost:单线程 IO 服务
在我的应用程序中,我将收到我想按优先顺序异步处理的各种事件。
我可以用 a 来做到这一点boost::asio::io_service
,但我的应用程序是单线程的。我不想为锁付钱,mallocs
你可能需要一个多线程程序(性能成本对我来说真的很重要)。我基本上是在寻找一个boost::asio::io_service
为单线程执行而编写的。
我很确定我可以自己使用 实现这个boost::coroutine
,但在我这样做之前,是否boost::asio::io_service
已经存在为单线程执行编写的类似 a 的东西?我已经扫描了 boost 库的列表,但没有什么特别突出的
c++ - 如何在 Boehm GC 中使用 Boost.Coroutine?
Boost.Coroutine 分配自己的调用堆栈。Boehm GC 是否将这些堆栈上的指针视为根,如果不是,我怎样才能做到这一点?在上下文切换到协程后,Boehm 终止程序。
c++ - Boost 1.57 Boost.Context fcontext_t 资源管理
一些上下文
在 Boost 1.57 中f_context
&make_fcontext
看起来像这样
我应该如何管理返回的资源make_fcontext()
?
我已经阅读了文档,在 IRC 上询问并查看了示例,但找不到任何东西。是否需要释放/删除/关闭此资源?
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 已经为此提供了一些现成的用户机制?没有在文档中找到可用的东西。