Как Rust справляется с убийственными нитями?

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

1 ответ

Решение

Как Rust справляется с убийственными нитями?

Это не так; нет способа убить нить.

Смотрите также:

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

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

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

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

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

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

Другие вопросы по тегам