Как Rust справляется с убийственными нитями? - PullRequest
0 голосов
/ 18 марта 2019

Есть ли связь родитель-потомок между потоками, которые создаются? Если я убью нить, откуда я породил другие нити, убьют ли их тоже? Эта ОС специфична?

1 Ответ

3 голосов
/ 18 марта 2019

Как Rust обрабатывает темы уничтожения?

Нет;нет способа уничтожить поток.

См. также:

Есть ли связь родитель-потомок между порожденными потоками?

Когда вы создаете поток, вы получаете JoinHandle, который позволяет вам дождаться завершения дочернего потока.Ребенок не знает родителя.

[что происходит с другими потоками] в контексте паники и смерти потока

Документация для thread::spawn покрывает этот колодец:

Дескриптор соединения неявно отсоединяет дочерний поток при удалении.В этом случае дочерний поток может пережить родительский поток (если родительский поток не является основным потоком; весь процесс завершается, когда основной поток завершается).Кроме того, дескриптор соединения предоставляет метод join, который можно использовать для присоединения дочернего потока.Если дочерний поток паникует, join вернет Err, содержащий аргумент, данный panic.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...