История изменений
Исправление makoven, (текущая версия) :
Да, я не хочу знать про ряд инженерных проблем когда голова забита и без того мозговыносящей логикой заказчика.
Треды и евентлуп - это не инженерные проблемы, а принцип работы многозадачности практически всех электронных устройств
И да, я могу опустится на уровень ОС когда задача этого требует
If a goroutine exists that calls a function that will block potentially indefinitely, that goroutine cannot be stopped until the blocking function returns and the goroutine checks an «exit» channel, and exits of its own will.
In every day go programming, this condition should not exist, as all inter- thread communication, as well as reading and writing, should be done using channels. However, in C, many libraries (and, in my specific case, networking libraries) implement blocking functions (recv), and the mixture of a blocking function and a multi-channel select caused many implementation problems and «hacks» to get the «blocking» function to return periodically, so the exit channel could be checked, and the routine could exit if it had to.
Исходная версия makoven, :
Да, я не хочу знать про ряд инженерных проблем когда голова забита и без того мозговыносящей логикой заказчика.
Треды и аио - это не инженерные проблемы, а принцип работы многозадачности практически всех электронных устройств
И да, я могу опустится на уровень ОС когда задача этого требует
If a goroutine exists that calls a function that will block potentially indefinitely, that goroutine cannot be stopped until the blocking function returns and the goroutine checks an «exit» channel, and exits of its own will.
In every day go programming, this condition should not exist, as all inter- thread communication, as well as reading and writing, should be done using channels. However, in C, many libraries (and, in my specific case, networking libraries) implement blocking functions (recv), and the mixture of a blocking function and a multi-channel select caused many implementation problems and «hacks» to get the «blocking» function to return periodically, so the exit channel could be checked, and the routine could exit if it had to.