http://www.geekride.com/index.php/2010/01/fork-forking-vs-threading-thread-linux-kernel/

ли у нас какие-либо отношения между fork () и CreateThread? Есть ли что-нибудь, что CreateThread внутренне вызывает fork ()?

Ответы на вопрос(1)

отоки, а не процессы). Пользовательские потоки выполняются в контексте процесса. Когда вы вызываете CreateThread, вы запрашиваете ядро ​​NT выделить рабочий блок в контексте вашего процесса (у вас также есть волокна, которые в основном являются потоками, которые вы можете запланировать самостоятельно, но это выходит за рамки темы вашего вопроса).

Когда вы вызываете CreateThread, вы предоставляете функции точку входа, которая будет запускаться после вызова функции. Код должен находиться в виртуальном пространстве процесса, а страница должна иметь права на выполнение. Проще говоря, вы даете указатель на функцию. ;)

fork () - это функция UNIX, которая запрашивает ядро ​​о создании копии запущенного процесса. Родительский процесс получает pid дочернего процесса, а дочерний процесс получает 0 (таким образом, вы знаете, кто вы есть).

Если вы хотите создать процесс в Windows, вы вызываете функцию CreateProcess, но она не ведет себя как fork (). Причина в том, что большую часть времени вы будете создавать потоки, а не процессы.

Как видите, между CreateThread и fork нет никакой связи.

 Piotr Dobrogost20 мар. 2011 г., 12:46
Если вы хотите создать процесс в Windows, вы вызываете функцию CreateProcess, но она не ведет себя как fork (). Причина в том, что большую часть времени вы будете создавать потоки, а не процессы. Какой из них используется является следствием разницы между двумя, а не причина :)

Ваш ответ на вопрос