ну в отдельном гринтреде
greenthread - это термин из мира java 1.0. уже в java 1.2 гринтреды спилили начисто
так горутина - это ж и есть гринтред, разве нет?
в тех гринтредах надо было часто звать yield. соответственно - и проблемы остановки не возникало.
я так понимаю, это детали. Суть гринтредов не в этом, а в том, что это легковесные потоки
Можете сказать, почему вам не подходит вариант с передачей канала в функцию ?
суть гринтредов, как и горутин, в кооперативной многозадачности. только в гринтредах кооперацию надо было поддерживать явно, а в горутинах нужные вызовы вставляет компилятор.
говорил уже. Это сразу делает функцию асинхронной. А я бы хотел её и синхронно вызывать
что такое асинхронная функция, спрошу еще раз
С чего вы взяли? Вы можете передать канал и в синхронную функцию без запуска горутины
скорее в том, что это концепция рантайма, а не ос.
функция, которую нельзя вызвать синхронно (если не хочешь получить дедлок)
ну и как в такой функции писать в канал? И как из него читать в этом же потоке, не получая дедлок?
Вашей функции не надо писать в канал. Читать через селект
https://godbolt.org/z/hEE5s41xz
Мы говорим про канал, который сигнализирует о том, что надо завершить работу
я думаю имеется ввиду вызов функции async def tratatatat(): …. без await
этого синтаксиса я не понимаю 🙂 я никогда не писал event driven с await
окей, хорошо, написали функцию с вот этим. Запустили её через go - всё работает, прекрасно. Но а если запутим её без go, то есть, синхронно?
Обсуждают сегодня