2009-10-23 4 views

ответ

3

Нити иногда реализуются исключительно в пространстве пользователя (а затем также называются «зелеными потоками»), но обычно в пространстве ядра. wikipedia article объясняет это красиво.

5

В Linux pthread_create() et al. реализуется как часть проекта glibc. Он использует (не переносимый, специфичный для Linux) syscall clone(). (Linux fork() также реализован в терминах clone()). Некоторые из BSD также имеют аналогичный системный вызов, называемый rfork().

Я понимаю, что clone() или rfork() создадут новый процесс, но вы можете указать флаг, который говорит: «Используйте семантику копирования на запись, чтобы дать это другое адресное пространство». Итак, если вы хотите fork(), вы указываете этот флаг, но если вы хотите создать поток, вы этого не сделаете, и вы получите общее адресное пространство.

(отредактировано для более подробной информации)

Смежные вопросы