Met*_*est 7 c linux x86 pthreads
从makecontext手册...
由于当前pthread实现的限制,makecontext不应该在链接到pthread(3)库的程序中使用(无论是否使用线程).
现在我的问题是,为什么它不起作用以及有哪些替代方法.实际上我有兴趣在某些点上在用户级线程中切换堆栈,但我看到当我执行swapcontext时,我偶尔会出现分段错误.我该怎么办?
我希望实现这样的目标......
void thread_func(void * thread_args)
{
a();
b();
getcontext/makecontext/swapcontext to call c();
d();
....
}
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,我想在执行函数c时使用单独的堆栈.
由于当前pthread实现的限制,makecontext不应该在链接到pthread(3)库的程序中使用
本手册的这一部分适用于LinuxThreads,它用于将%esp值向上舍入以查找当前线程描述符.如果您在备用堆栈上执行,那么(显然)不会产生有效的线程描述符.
在过去5年多的时间里,任何Linux发行版都不再使用LinuxThreads,而且{get,make,swap}contextNPTL线程的工作正常.
编辑:实际上,我只看到NetBSD文档中的"由于限制" ,而不是Linux文档.
当我做swapcontext时,我偶尔会遇到分段错误
您有一个错误,偶尔会显示为分段错误.您还没有提供足够的信息来猜测该错误的位置.
| 归档时间: |
|
| 查看次数: |
914 次 |
| 最近记录: |