Я пишу многопоточную среду в c, используя setjmp() и longjmp() для переключения между потоками.выделение памяти стека
Я не уверен, как было бы лучше выделить пространство стека для каждого потока. Это должно выполняться динамически в средах с большими потоками, но я не думаю о способе отслеживания того, сколько стека используется потоками, чтобы изменить выделенную сумму.
Я мог бы предварительно выделить статический объем пространства между секциями стека, как это:
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)
, но это, кажется, за негибкой, я был просто интересно, как многопоточные среды обычно выделяют память для каждого потока?
Благодаря
Обычно вызов «CreateThread» или любой другой вызов выделяет пространство стека с использованием некоторой функции ядра «kmalloc» и предварительно загружает его соответствующим образом, чтобы поток можно запустить с помощью прерывания-возврата, как если бы он был запущен раньше и были выгружены. –
Я подозреваю, что ты на своем пути. –
Это может быть правдой, но буквально любой совет приветствуется, просто не топтайте меня, когда вы прыгаете с высокой лошади ... – jayjay