Выход из потока с возвратом
У меня небольшая проблема, и я надеюсь найти кого-нибудь, кто сможет помочь. Я пытаюсь разработать библиотеку потоков в c, используя ucontext, и я разработал для этого базовые функции. Итак, теперь моя проблема в том, что я хочу рассмотреть случай, когда пользователь завершает свою функцию с помощью return вместо моей функции выхода.
Можно ли узнать, завершен ли контекст потока, и получить возвращаемое значение, когда пользователь использует retutn в своей функции?
1 ответ
Можно ли узнать, завершен ли контекст потока, и получить возвращаемое значение, когда пользователь использует retutn в своей функции?
Да: вы предоставляете свою собственную функцию и инициализируете ею контекст. Вы передаете указатель на пользовательскую функцию и аргумент (если есть) в вашу функцию. Функция будет выглядеть примерно так:
void *thread_top(void *(*user_fn)(void*), void *arg)
{
void *ret = (*user_fn)(arg);
// Do whatever is desirable for "ret" and terminate the context here.
}