Daniel
не соображу с ходу - зачем бы это было нужно
Nikolay
Подрубаем что-то, через CGO, где требуется чтоб что-то вызывалось в том потоке в котором было создано. А-ля main thread для UI напрашивается как пример
Daniel
ага
Daniel
спасибо
Nikolay
1. у go есть тредпул. так что даже блокирующие операции выполняются одновременно
главное иметь ввиду один нюанс, который меня смутил примерно год назад уже. Если блокируемся на сисколе, который вызываем ручками (лично я дергал WinAPI) из множества горутин, мы вылезаем за пределы GOMAXPROCS и кол-во тредов на процесс может драматически увеличиться (процессы планировщика добавятся) и после этого до уничтожения самого процесса так и останутся висеть. Так что с блокирующими операциями при сисколах это нужно иметь ввиду
Slava
Daniel
связано, конечно
Slava
как?
Slava
http://blog.panic.so/images/syscall.jpg
Anonymous
Daniel
как?
The GOMAXPROCS variable limits the number of operating system threads that can execute user-level Go code simultaneously.
Daniel
то есть - тредов будет не меньше
Nikolay
А сколько можно запустить одновременно процессов??
если имеется ввиду тредов на процесс то от ОС зависит. в части винды - в блоге марка русиновича древний пост есть как примерно посчитать, под Linux не встречал, но за кол-вом тредов я предпочитаю следить всегда
Slava
ну да, не меньше, но верхняя граница не определена =)
Daniel
мне случалось - в яве - запускать треды десятками тысяч
Anonymous
Slava
➜ ~ cat /proc/sys/kernel/threads-max
3095473
Daniel
го - это всегда один процесс и в нем треды
Anonymous
Daniel
не происходит
Daniel
если все эти потоки по больше части ждут ввода-вывода - все ок
Anonymous
Slava
запустить можно сколько угодно
Slava
конкурентно != выполняться одновременно, один процессор может выполнять только один тред
Nikolay
а тьфу, ты про процессор - будем считать что кол-во процессоров это кол-во ядер которые отображаются в ОС для простоты и плевать на все эти технологии
Nikolay
а то человека запутать так можно
Nikolay
Nikolay
cat /proc/sys/kernel/threads-max
Nikolay
но это тотал на ОС
Nikolay
если писать хочется на Go то с этим заморачиваться вовсе не нужно
Nikolay
запускаем много горутин и не думаем о нитках ОС вообще, за исключением тех случаев когда дергаем ручками системные вызовы из Go напрямую
Anonymous
🏳️ Phil
Daniel
🏳️ Phil
Да всё проще. google event driven
Anonymous
🏳️ Phil
Anonymous
Nikolay
Без обид, но ваша аватарка меня дико пугает
Slava
Nikolay
да там тоже только один процесс на процессор, просто часть вещей дублировано и кажется что логически их два
да я понимаю все это, я имел ввиду что процессору побоку такие сущности ОС как треды - выполняет поток комманд. так вот hyper-threding это фактически два потока комманд к процессору и он их граммотно переключает. А раз их 2 потока, значит система может повесить на одновременное исполнение 2 треда на 2 логических процессора, которые являются одним физическим. В итоге твое утрвеждение что один процессор может выполнять один тред не совсем верно - два треда на два логических ЦПУ которые являются одним физическим. Более точно это то, что один физический ЦПУ не может выполнять больше 1й инструкции в один момент времени. Но все это болтовня по мне так сейчас с моей стороны :)
Nikolay
В мою писанину можно не вникать, это перед сном меня пробило порассуждать.
Daniel
процессору, кстати, современному, не совсем по боку
Daniel
я не помню подробностей, но современные ос договариваются с современными процессорами о том, что у них происходит
Nikolay
там как-то хитро они делают оптимизации различные под ОС
Nikolay
ибо так прям чтоб я был в таких вопросах супер-компитентным я сказать не могу от слова совсем, поэтому и опустил. краем глаза где-то информацию встречал, принимаю на веру что там что-то происходит попимо моих простейших пониманий как это работает
Nikolay
предпочитаю не лезть в дебри, а представления свои основывать на опыте работы с простейшими цпу типа AVR контроллеров или Cortex-M3 которые где-то у меня валяются дома. Подцепил внешний тактовый генератор к AVR и больше одной инструкции за такт там не бывает, договоренностей с ОС там тоже никаких нет - все как на моем спектруме в детстве, просто и понятно. А что там внутри навороченных современных ЦПУ происходит я понятия не имею честно говоря
Daniel
я бросил читать справочники по ассемблерам на i386
Daniel
на i386 все было ровно так - один такт, одна (максимум) инструкция
Daniel
сейчас там все иначе
Daniel
сейчас там кеш, предсказатель ветвления, dma и vtx
Daniel
и хинты предсказателю
Nikolay
я бросил читать справочники по ассемблерам на i386
была книжка у меня по 386 процессору вроде, или по 486му не помню уже, но я ее так и не осилил. спустя годы потянуло на микроконтроллеры что-то, пол года поигрался, пописал на ассемблере, Чек-ТВ мутил все (на COM выплевывается кассовый чек, накладывается контроллером на входящий видеосигнал с камеры наблюдения и на выход уже сигнал с наложенным поверх чеком, на полупрозрачном сером фоне таком), потом надоело. Хотя для разнообразия норм увлечение было.
Anton
еее скалка
engelbart
Кстати насчет вот иде , какая ваша любимая для скалы ?
Anton
идея
nvkv
nvkv
у sbt неплохой авторелоад
Oleg
Та блин, весь список контактов перемещался, каждый групповой чат догадался переименоваться
nvkv
Zhenja
engelbart
Пойму это минус скалы что в виме с ней не очень
nvkv
nvkv
пацаны, а пойдемте в чят к гоферам троллировать?
Vadim
о, будем монадировать монады, да не вымонадировывать
nvkv
у них там даже дженериков нет!