【发布时间】:2011-12-31 10:08:14
【问题描述】:
来自 makecontext() 手册...
由于当前 pthread 实现的限制,makecontext 不应在链接到 pthread(3) 库的程序中使用(无论是否使用线程)。
现在我的问题是,为什么它不起作用以及替代方法是什么。实际上,我有兴趣在某些时候在用户级线程中切换堆栈,但我看到当我调用 swapcontext() 时,我时不时会遇到分段错误。我该怎么办?
我想实现这样的目标:
void thread_func(void * thread_args)
{
a();
b();
getcontext/makecontext/swapcontext to call c();
d();
....
}
所以在这种情况下,我想在执行函数c()时使用单独的堆栈。
【问题讨论】:
-
非常困难的问题;-p!还没有回答!
-
你想用
makecontext/etc 做什么?它们的主要目的是实现线程库,当 pthread 已经存在时,这有点傻。 -
@duskwuff,我没有将它用于线程。
标签: c linux x86 pthreads coroutine