首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当ucontext终止时,从它获得返回值。

当ucontext终止时,从它获得返回值。
EN

Stack Overflow用户
提问于 2022-03-02 22:04:30
回答 1查看 73关注 0票数 0

我正在使用ucontext_t实现一个用户级线程库。我通过uc_link将线程链接到调度程序线程,但是在某些情况下我们需要获得返回值。我不知道如何获得返回值,因为上下文是分开的。我认为访问返回值的唯一方法是以某种方式访问该上下文的堆栈,并找到返回值的位置。然而,这似乎是灾难和奇怪错误的一个公式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-03 15:54:18

终止时,

从ucontext获取返回值。

ucontext_t表示的执行上下文没有返回值。这在入口点函数终止时的行为中是隐式的(如果有后续上下文被激活的话),并且在入口点函数的签名中显式显示(它返回void)。

还请注意,入口点函数必须是非变量的,与makecontext()本身不同,尽管它可以接受任何固定数量的参数。makecontext的调用方有义务指定正确的参数计数和许多int参数。

如果您想在上下文之间通信数据,那么应该在某个共享内存位置写入数据或指向数据的指针,然后可以在不同的上下文中从该位置检索数据。在这种情况下,想必是库为每个线程维护的元数据中的某个位置。

如果所讨论的数据是某个函数的返回值,则该函数不能是上下文的入口点。在这种情况下(也出于其他原因),您可能希望避免使用用户提供的函数作为ucontext入口点。相反,使用一个由库内部提供的函数,它知道如何引导用户函数,以及返回时应该做什么。

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

https://stackoverflow.com/questions/71329704

复制
相关文章

相似问题

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