CreateThread по сравнению с ветвлением ()

Может быть не совсем то, что вы ищете. Но вы можете получить предыдущий каталог до того, как сделаете компакт-диск из переменной $ OLDPWD. Это все еще держит путь, который вы ищете.

5
задан sharptooth 6 March 2009 в 14:33
поделиться

5 ответов

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

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

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

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

Как Вы видите, нет никакого отношения между CreateThread и ветвлением.

10
ответ дан 18 December 2019 в 09:10
поделиться

CreateThread - для потоков, ветвление - для создания дублирующегося процесса. И нет никакого собственного способа иметь функциональность ветвления для окон (по крайней мере, через Win32).

1
ответ дан 18 December 2019 в 09:10
поделиться

ветвление () только существует в системах Unix, и оно создает новый процесс с тем же состоянием как вызывающая сторона. CreateThread () создает новый поток в том же процессе.

5
ответ дан 18 December 2019 в 09:10
поделиться

Модель процесса Windows и Unix существенно очень отличается, таким образом, нет никакого способа прямого отображения API от одного сверху другого.

ветвление () клонирует текущий процесс в два. В родительском процессе ветвление () возвращает pid, и в ребенке это возвращается 0. Это обычно используется как это:

int pid;
if (pid = fork()) {
    // this code is executed in the parent
} else {
    // this code is executed in the child
}

Cygwin является слоем эмуляции для создания и запуска приложений Unix в Windows, который эмулирует поведение ветвления () использование CreateProcess ().

1
ответ дан 18 December 2019 в 09:10
поделиться

Нашел эту ссылку, которая, как мне кажется, может быть полезна для выяснения некоторых фактов, касающихся разветвления / многопоточности. Поделиться здесь: http: //www.geekride.com/index.php/2010/01/fork-forking-vs-threading-thread-linux-kernel/

0
ответ дан 18 December 2019 в 09:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: