LINUX.ORG.RU

Смотри исходники Chromium'а. ЕМНИП в венде есть аналогичный механизм...

Deleted
()

Хорошенько подумать, почему бы не использовать WinApi для создания потоков. Прямого аналога fork() на Windows нет, в частности, из-за того, что потоки в большинстве случаев удобно заменяют отдельные процессы.

hippi90 ★★★★★
()
Ответ на: комментарий от alex_custov

Пока именно этим и занимаюсь.

knkd
() автор топика

юзать pthreadz

anonymous
()
Ответ на: комментарий от no-such-file

Ну да, но ведёт он себя аналогично системному. Это я к тому, что навелосипедить можно, если очень хочется.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от DELIRIUM

навелосипедить можно, если очень хочется

Так в cygwin, ЕМНИП, есть как раз такой велосипедный fork.

no-such-file ★★★★★
()
Ответ на: комментарий от metawishmaster

Можно ли нормально скомпилировать программу МинГВином, но с цугвиновскими библиотеками?

У меня не получилось - даже если подменить хидеры мингвина цугвиновскими и прилинковать libcygwin.a, сыпятся многочисленные варнинги на редефенишионсы.

Видно мингвин неявно линкует что-то, что конфликтует с именами цугвина. Справиться с этим не могу.

knkd
() автор топика
Ответ на: комментарий от Deleted

Совсем аналогичного нет :) CreateProcess() имеет гораздо более высокую цену, чем fork(). В венде единицей диспетчеризации является поток.

slackwarrior ★★★★★
()
Ответ на: комментарий от slackwarrior

В венде единицей диспетчеризации является поток.

Не знаю, к чему это, но в линуксе единица диспетчеризации тоже поток.

AptGet ★★★
()
Ответ на: комментарий от AptGet

4.2 В линуксе потоки создаются на основе «легковесных процессов». Процесс в винде гораздо тяжелее. И модель «мультипроцессности», которая опирается на fork() под виндой становится УГ, потому что создатели CreateProcess() ничего похожего не имели в виду.

slackwarrior ★★★★★
()
Ответ на: комментарий от slackwarrior

CreateProcess() имеет гораздо более высокую цену, чем fork(). В венде единицей диспетчеризации является поток.

И причем тут вообще единица диспетчеризации?

tailgunner ★★★★★
()
Ответ на: комментарий от slackwarrior

4.2 В линуксе потоки создаются на основе «легковесных процессов».

И это не мешает планировщику выполнять потоки как отдельные сущности.

Процесс в винде гораздо тяжелее.

В каком смысле «тяжелее»? Контекста больше, запустить труднее?

И модель «мультипроцессности», которая опирается на fork() под виндой становится УГ, потому что создатели CreateProcess() ничего похожего не имели в виду.

Как это связано с диспетчеризацией?

AptGet ★★★
()
Ответ на: комментарий от AptGet

не поток, а task.
Процесс это task, и тред это task.

В винде процесс это просто контейнер, и единица выполнения там тред.

lovesan

anonymous
()
Ответ на: комментарий от AptGet

нет, отличие фундаментально.

хотя Native API и позволяет сделать fork, через некоторые хитрости, но надо понимать, что в винде у процесса нет «состояния выполнения», как оно у процессов в unix-like системах. У процесса есть виртуальная память, коллекция тредов и другие штуки, но сам процесс это просто контейнер, по процессам время исполнения не квантуется.

anonymous
()
Ответ на: комментарий от anonymous

хотя Native API и позволяет сделать fork, через некоторые хитрости, но надо понимать, что в винде у процесса нет «состояния выполнения», как оно у процессов в unix-like системах. У процесса есть виртуальная память, коллекция тредов и другие штуки, но сам процесс это просто контейнер, по процессам время исполнения не квантуется.

Нет нет, с вендой я согласен. Вендовый процесс как я понимаю, больше похож на task из L4. Я хотел сказать что «light-weight process», «thread» в других unix-like OS и task в линуксе - принципиально похожие сущности с разными названиями.

AptGet ★★★
()
Ответ на: комментарий от AptGet

Нет нет, с вендой я согласен.

Вопрос ТСа относился к «тому же самому» под оффтопиком. Ну так «того же самого» на деле-то и нет. И вытекает это не из различий в терминологии :) (Дело не в похожести, а в различиях)

slackwarrior ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.