Выход из потока с возвратом

У меня небольшая проблема, и я надеюсь найти кого-нибудь, кто сможет помочь. Я пытаюсь разработать библиотеку потоков в 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.
}
Другие вопросы по тегам