我正在使用 setjmp() 和 longjmp() 在 c 中编写一个多线程环境来在线程之间切换。
我不确定如何最好地为每个线程分配堆栈空间。这必须在更大规模的线程环境中动态完成,但我想不出一种方法来跟踪线程正在使用多少堆栈以更改分配的数量。
我可以像这样在堆栈的各个部分之间预先分配静态空间量:
void call_with_cushion (void) {
char space[1000];
space[999] = 1; /* Do not optimize array out of existence */
child();
}
(来自维基百科http://en.wikipedia.org/wiki/Setjmp.h的代码片段)
但这似乎超出了灵活性,我只是想知道多线程环境通常如何为每个线程分配内存?
谢谢