> она не может быть сделана без блокировки процесса, 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 mailing list [email protected] | http://moscow.pm.org
