Спорить, пожалуй, действительно не стану, но пару уточняющих вопросов задам :)
> 1) Создание потоков и процессом в Линуксе делается одним вызовом (clone) > разница только в копировании адресного пространства при создании процесса, > а внутри они ничем не различаются, кроме адресного пространства. > Если процесс поток/процесс живет довольно долго, то разницу в накладных > расходов при создании процесса можно пренебречь а почему мы не взяли язык повыше уровнем, в котором есть виртуальная машина, которая нам все проблемы взаимодействия с системными тредами уже решила? > 2) При большом количестве потоков у ядра вырастают накладные расходы на > переключение потоков. > В случае большой нагрузки вообще говоря количество потоков > вырастает(threads), а в случае асинхронной программы это количесто не > меняется, поэтому > асинхронная модель будет выигрывать за счет накладных расходов ядра системы. Наша программа ведь что-то делает? Сравним ли этот оверхед с затратами на собственно полезную деятельность? > 3) Асинхронная программа это однопоточная программа. А поскольку отлаживать > однопоточную программу проще чем многопоточную, то > и отлаживать асинхронную программу легче, чем программу с потоками. это не аргумент, а еще один тезис :) мой опыт говорит мне прямо противоположное. > 4) В асинхронной программе не нужны средства синхронизации потоков(Из-за > многопоточности), которые просто необходимы в потоках. > Накладные расходы на синхронизацию не ускоряют поточные программы и иногда > могут быть просто чудовищными. > 100-200 циклов процессора минимум на одном примитиве. синхронизация между процессами нам уже не нужна? или на ipc расходы менее чудовищные? > 5) forkи проще концептуально и приводят к меньшему количеству ошибок в > программировании, значит отлаживать будет меньше. forkи проще чем что? чем goroutines? чем jvm threads? черт, все равно спор получается :( -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
