[Moscow.pm] Темы для докладов

Daniel Podolsky onokonem на gmail.com
Пн Фев 9 01:55:20 PST 2015


Спорить, пожалуй, действительно не стану, но пару уточняющих вопросов задам :)

> 1) Создание потоков и процессом в Линуксе делается одним вызовом (clone)
> разница только в копировании адресного пространства при создании процесса,
> а внутри они ничем не различаются, кроме адресного пространства.
> Если процесс поток/процесс живет довольно долго, то разницу в накладных
> расходов при создании процесса можно пренебречь
а почему мы не взяли язык повыше уровнем, в котором есть виртуальная
машина, которая нам все проблемы взаимодействия с системными тредами
уже решила?

> 2) При большом количестве потоков у ядра вырастают накладные расходы на
> переключение потоков.
> В случае большой нагрузки вообще говоря количество потоков
> вырастает(threads), а в случае асинхронной программы это количесто не
> меняется, поэтому
> асинхронная модель будет выигрывать за счет накладных расходов ядра системы.
Наша программа ведь что-то делает? Сравним ли этот оверхед с затратами
на собственно полезную деятельность?

> 3) Асинхронная программа это однопоточная программа. А поскольку отлаживать
> однопоточную программу проще чем многопоточную, то
> и отлаживать асинхронную программу легче, чем программу с потоками.
это не аргумент, а еще один тезис :)

мой опыт говорит мне прямо противоположное.

> 4) В асинхронной программе не нужны средства синхронизации потоков(Из-за
> многопоточности), которые просто необходимы в потоках.
> Накладные расходы на синхронизацию не ускоряют поточные программы и иногда
> могут быть просто чудовищными.
> 100-200 циклов процессора минимум на одном примитиве.
синхронизация между процессами нам уже не нужна? или на ipc расходы
менее чудовищные?

> 5) forkи  проще концептуально и приводят к меньшему количеству ошибок в
> программировании, значит отлаживать будет меньше.
forkи проще чем что? чем goroutines? чем jvm threads?


черт, все равно спор получается :(


Подробная информация о списке рассылки Moscow-pm