gpt4 book ai didi

c - makecontext uc_link 给出段错误

转载 作者:太空宇宙 更新时间:2023-11-04 03:58:11 28 4
gpt4 key购买 nike

我正在尝试制作一个像 pthreads 这样的用户级线程库。我正在使用 makecontext()/swapcontext() 在线程之间进行切换,并在为线程创建上下文时传递 uctx_main 到上下文中的 uc_link 字段。

context.uc_stack.ss_sp = thread->c_stack;
context.uc_stack.ss_size = sizeof(thread->c_stack);
context.uc_link = &uctx_main;

但是,当我的线程终止时,它会给我一个段错误。我的主程序仍在运行。

此外,有人可以解释一下什么是 uctx_main 吗?它是主要功能的默认上下文吗?我创建的每个线程都需要一个 uctx_main 吗?很抱歉问了这么个愚蠢的问题,但我在谷歌上没有找到任何东西。

最佳答案

根据您对 uctx_main 的引用,我假设您正在遵循 Linux man page for makecontext() 中的示例.

在该示例中,uctx_main 是主线程的上下文,它是在调用 setcontext() 切换到 uctx_func2 时设置的。

uctx_main 没有任何特殊之处,除了它是从主线程设置的(在示例中被设置为 uctx_func1 的后继者)。

一般来说,您创建的每个线程都需要有一个上下文。

关于c - makecontext uc_link 给出段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14544534/

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