Как долго после pthread_exit () можно ожидать успеха pthread_join ()?

Мне было поручено создать библиотеку потоков на уровне пользователя, которая копирует функциональность pthread (полное раскрытие: это для курса ОС). Тем не менее, мне неясно, как pthread_join() а также pthread_exit() взаимодействовать, когда поток уже вышел.

В частности, страница руководства гласит:

Функция pthread_join () ожидает потока, указанного потоком
прекратить. Если этот поток уже завершен, то
pthread_join () возвращается немедленно.

Является ли это гарантией того, что даже если я создам миллионы потоков, их результаты будут доступны для одного объединения? В противном случае, как долго можно ожидать, что результат будет сохраняться?

Я не ищу совета о том, как это реализовать (это самое интересное!), Я просто пытаюсь закрепить поведение, прежде чем погрузиться.

1

Решение

Ограничения по времени нет, реализация должна поддерживать «возвращаемое значение», пока сам процесс активен, чтобы сделать его доступным для объединения.

Определение POSIX для pthread_exit просто говорит:

pthread_exit() функция должна завершить вызывающий поток и сделать значение value_ptr доступен любое успешное соединение с завершающей нитью.

Не имеет значения, было ли объединение инициировано до выхода, или спустя годы, или был только один дополнительный поток или сотни.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]