[Moscow.pm] HTTPD на короутинах

Alexandr Gomoliako zzz на zzz.org.ua
Ср Май 23 21:35:54 PDT 2012


> она не может быть сделана без блокировки процесса, Coro выделяет для этого
> действия отдельный C-thread, который будет выполняться паралельно

Нет, параллельно ничего не будет выполняться, заставили меня
посмотреть в libcoro, все на одном процессоре. И там non-preemptive
scheduling, т.е. явная передача управления. Даже в случае с pthreads
там глобальный мутекс. Так что любая CPU интенсивная задача будет
мешать всем корутинам в процессе. Это один в один как с event
loop'ами, ну только намного сложнее.

Из libcoro/coro.c:
/* this mutex will be locked by the running coroutine */
pthread_mutex_t coro_mutex

> А где вы прочитали про: "не гарантирует, что не прервется, так что семафоры и локи
> для синхронизации нужны"?

Нигде не увидел, чтобы гарантировал, потому так и подумал, но все-таки
гарантирует. Пришлось смотреть исходники, чтобы это понять.

В общем коро это бред, а сложный софт и вся эта догма уже реально
достали. Это ни к чему хорошему не приводит, вон ООП в целую религию
переросло: есть те кто верит, а есть те, кто знает почему это маразм.


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