首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在LLVM中设置堆栈指针吗?

我可以在LLVM中设置堆栈指针吗?
EN

Stack Overflow用户
提问于 2016-09-06 06:39:28
回答 1查看 752关注 0票数 5

我正在开发一种类似于c++的小型语言,我将把它编译成LLVM。我想要实现的事情之一是协作多任务;将有一个“让步”操作符,它有望将堆栈指针和程序计数器切换到我程序中的下一个“线程”。

在llvm中可以做到这一点吗?我可以设置堆栈指针寄存器吗?如果没有,还有其他类似的事情我可以做吗?

编辑:https://internals.rust-lang.org/t/llvm-coroutines-to-bring-awarness/3708/12协程(http://llvm.org/docs/Coroutines.html)听起来很有前途,尽管LLVM带来了一些关于堆栈或无堆栈协程的问题。我想知道,它们是否可以用来实现一个通用的类似收益的运算符?

编辑2:在c++ boost中有一个叫做“上下文”的东西,它可以实现堆栈协程。但仍在试图弄清楚他们是如何做到这一点的。有人知道吗?

EN

回答 1

Stack Overflow用户

发布于 2016-09-06 07:09:27

假设您有可用的gcd库:您可以通过使用信号量(dispatch_semaphore_t)轻松地实现协作多任务。设置信号量计数,以便只有一个线程可以同时运行。yield()函数发出信号并立即锁定信号量-- signal()唤醒另一个线程,该锁停止调用yield的线程。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39338448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档