Aziz
type superSlice slice
Aziz
типа такое
Aziz
так, сейчас вы создали тип который как значение берет только byte, верно же ?
Илья
да, но можно свой тип
Илья
расширить слайс это только добавить свои методы
Aziz
а я хочу создавать такой тип который может принять все (как generic) можно такое ?
Vladislav
Vladislav
но это кончено
Vladislav
лучше как Илья предлагает - слайс из конкретного типа и этот тип задать параметром
Alexander
короче нас ждут теперь интерфейсы: Makable, Appendable, Rangable
Alexander
Slicable
Alexander
иначе пизда
Илья
Stackable
Юра (Юрий Александрович)
Илья
Concurrentable
Alexander
все будет, только потом. и все будут плеваться "что за ерунда, хватит уродовать мою маленькую красивую гошечку", но где разработчики были 8 лет
Alexander
вангую, в ближайшие года 3 появится
Юра (Юрий Александрович)
да, наслаждайтесь гошечкой, пока она еще маленькая и уютная. Хотя, наверное, уже поздно.
xarakiri
ждем появления магических методов)
Alexander
а по сути, ну можно свой Make сделать на таком слайсе, свой Append и тд, но чем фактически будет отличаться от возможности дать обращаться built in функциями непонятно
Alexander
Alexander
ну тут тоже
Alexander
только у него будет внутри по сути тот же самый make и ничего больше, если взять вопрос с которого началось обсуждение
Юра (Юрий Александрович)
А я вот мечтаю о каналах с изменяющимся размером.
Vladislav
Юра (Юрий Александрович)
изменять ) вдруг ты создал канал, а потом оказалось, что маловат, надо увеличить.
Vladislav
канал не предназначен для хранения данных
Юра (Юрий Александрович)
но размер же у него зачем-то есть?
Илья
а зачем увеличивать размер канала?
Vladislav
размер и у буфера есть
Илья
Юра (Юрий Александрович)
Допустим, я хочу, чтобы пишущие в канал го-рутины не простаивали. Как я могу это обеспечить? Никак.
Vladislav
прохладная мотивация и xy problem в целом
Илья
Юра (Юрий Александрович)
очередь - это уже внешний инструмент. В Го ж нет очередей встроенных. Точнее есть - но это как раз канал
Илья
Буферизированный канал создается с конкретным лимитом, который зависит от маскимальной вместимости вашего пайплайна. Если capacity изменяется, то смысл использовать каналы вообще?
Юра (Юрий Александрович)
А что тогда использовать вместо каналов?
Vladislav
Vladislav
буферизованный канал по сути и есть просто очередь с сахарком
Nikita
по поводу этого можно почитать про worker pool, чтобы не допускать простоя горутин
Alexander
для чего канал с изменяющимся буфером? чтобы что?
Alexander
нуууууууу
Alexander
а когда он нужен большой?
Alexander
в чем цель увеличивать? я не очень понимаю
Alexander
ну это плохое, потому что нет гарантии обработки. нужна внешняя очередь
Юра (Юрий Александрович)
А там в любом случае гарантии нет. .
Alexander
есть, положил во внешнюю очередь - четенько уже в отдельных процессах обработку отстроил
Alexander
тут крякнулся твой процесс веб сервера - прощай внутренняя очередь
Alexander
а если гарантия обработки не столь критична, а расширить хочешь, чтобы горутины не ждали, то значит у тебя тормозит процесс переваривания этой очереди, и вместо того, чтобы увидить, что он у тебя тормозит, ты будешь жить себе дальше припеваючи, а потом окажется, что у тебя нет 90% побочных данных, которые должны были сформироваться
Alexander
Илья
Alexander
так да
Alexander
я об чем говорю
Alexander
вообще вместо буферизированного канала есть мьютекс и слайс =)
Alexander
так а что ты откладываешь в очередь в таком случае?
Alexander
я не понимаю, приведи пример
Юра (Юрий Александрович)
В очередь мы складываем запросы клиентов.
Alexander
под очередью будем понимать и буферизированный канал, и внешнюю
Vladislav
Vladislav
почему бы горутине, принявшей запрос, просто не ждать ответа
Vladislav
тем более что наверняка она так и так будет что-то из канала ждать
Alexander
В очередь мы складываем запросы клиентов.
в смысле? типа у тебя есть n воркеров, и запрос клиента ты кладешь в канал, чтобы ждать пока его воркер обработает, отдаст результат чтобы ты мог его отправить?
Alexander
чтобы что?
Юра (Юрий Александрович)
распухает количество го-рутин и распухает количество используемой ими памяти. А так - горутина, принимающая запрос от клиента, оставляет в канале структуру-запрос и благополучно завершается, не занимая больше память.
Alexander
у тебя уже горутина создана
Alexander
или ты хочешь свой веб сервер написать?
Юра (Юрий Александрович)
потому что контекст принятия и обработки запроса достаточно крупный, и держать множество стоящих на паузе рутин не нужно.
Alexander
свой хттп сервер
Alexander
Юра (Юрий Александрович)
у тебя уже горутина создана
го-рутина, принимающая запрос, и го-рутина, обрабатывающая запрос - это разные го-рутины.
Alexander
ну а что ты хочешь? приходит запрос, у тебя запускается твой хэндлер, на него УЖЕ (!) выделена горутина