@gogolang

Страница 1388 из 1630
Alexander
11.09.2018
13:32:05
shared mutable state без мьютексов говорите? что-то я вам не верю, коллега
С разморозкой https://ru.m.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%B0%D1%8F_%D1%82%D1%80%D0%B0%D0%BD%D0%B7%D0%B0%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C

Roman
11.09.2018
13:33:08
green thread'ы в C, это таки не green thread'ы в констексте runtime'а языка
Ну да, только голый си и никаких библиотек

Google
Алексей
11.09.2018
13:33:34
обычные потоки менее эффективны горутин? с чего такое мнение?
Ну хотя бы с того, что для каждого потока выделяется полноценный стек, да и переключение между ними будет задействовать шедьюллер в ядре.

Roman
11.09.2018
13:35:15
Ну хотя бы с того, что для каждого потока выделяется полноценный стек, да и переключение между ними будет задействовать шедьюллер в ядре.
вот я чёт сомневаюсь что горутины производительнее потоков в этом плане. Но это надо мерить, тут гадать не стоит.

Alexander
11.09.2018
13:35:35
Да и там не все так просто

Алексей
11.09.2018
13:36:10
вот я чёт сомневаюсь что горутины производительнее потоков в этом плане. Но это надо мерить, тут гадать не стоит.
ну при большом количестве явно эффективнее и производительней (иначе просто вместо них потоки бы юзали и не парились)

Roman
11.09.2018
13:37:02
А это уже детали реализации
проблема в том что так или иначе mutable shared state требует синхронизации. Самая низкоуровневая примитива синхронизации это mutex, он в основе всех механизмов синхронизации. lock-free алгоритмы и структуры существуют, но не все проблемы решают, зависит от задачи. Порой mutex просто неизбежим

Roman
11.09.2018
13:37:55
ну при большом количестве явно эффективнее и производительней (иначе просто вместо них потоки бы юзали и не парились)
вот и я о чём. горутины это про простое написание конкурентного приложения. в то время как для решение конкретных низкоуровневых задач thread pool'ы лучше

Алексей
11.09.2018
13:38:22
а чем горутина так принципиально отличается от потока?

Roman
11.09.2018
13:38:32
Алексей
11.09.2018
13:38:44
а что тогда?
атомарные операции

Google
Алексей
11.09.2018
13:39:10
это по моему самое низкоуровневое из всех

Roman
11.09.2018
13:39:16
а чем горутина так принципиально отличается от потока?
тем что она не поток а лишь абстракция над ним которая обходится тебе ценой user-space runtime scheduler'а и 4кб памяти?

атомарные операции
ну может быть ты и прав, да

Алексей
11.09.2018
13:40:29
тем что она не поток а лишь абстракция над ним которая обходится тебе ценой user-space runtime scheduler'а и 4кб памяти?
именно это я и пытаюсь сказать, что работа с горутинами в принципе мало отличается от работы с потоками, потому что в принципе это почти одно и то же, за исключением производительности

то есть можно в теории запилить реализацию го, в которой вместо горутин будут тупо потоки

и никто особо не заметит разницы, пока этих потоков не станет слишком много

Roman
11.09.2018
13:42:15
именно это я и пытаюсь сказать, что работа с горутинами в принципе мало отличается от работы с потоками, потому что в принципе это почти одно и то же, за исключением производительности
не стоит сравнивать системные потоки и горутины, это таки совершенно разные вещи горутина например не знает приоритета. А системный scheduler может приоризировать потоки

Алексей
11.09.2018
13:43:14
мне почему то кажется, что можно изхитриться и сделать приоритеты для горутин

Roman
11.09.2018
13:43:40
например представь себе игровой движок где у тебя рендеринг в горутине 0, физика в 1-10, а акторы AI в 10-10.000 проблема в том, что с scheduler'ом Go мы не сможем приоризировать горутину 0, хотя это было бы полезно чтобы не терять кадры в том случае, когда runtime больше занять вычислением AI..

с потоками можно приоризировать rendering thread дабы не терять кадры

Алексей
11.09.2018
13:44:39
ну тут уже да, абстракция немножко протекает

Roman
11.09.2018
13:44:43
мне почему то кажется, что можно изхитриться и сделать приоритеты для горутин
нет, никак, вообще никак, потому-что goroutine scheduler понятия не имеет какая из горутин важнее, ему плевать

Алексей
11.09.2018
13:45:29
нет, никак, вообще никак, потому-что goroutine scheduler понятия не имеет какая из горутин важнее, ему плевать
но гипотетически можно влезть в код шедулера и сделать ему приоритеты

типа потокам в пулле назначить разные приоритеты и мапить более приоритетные горутины на более приоритетные потоки

(но так делать конечно же не надо)

Roman
11.09.2018
13:47:09


но гипотетически можно влезть в код шедулера и сделать ему приоритеты
Гипотетически - да, практически - нет. У гугла нет планов встраивать приоритеты в Go scheduler ибо для таких вещей как коллективная обработка запросов API - она не нужна, а 3D движок на Go никто писать не будет. Однако я считаю можно бы конечно было и добавить, чтоб некоторые горутины намеренно планировались на приоризированных системных потоках или вообще запускались в своих отдельных.. было бы круто, но я не знаю какие этому могут быть последствия

нет, IPC это вам не shared memory, он дорого обойдётся как в плане написания кода так и в плане производительности

Evgeny
11.09.2018
13:52:57
современные ОС меняют приоритеты потоков динамически, если поток computation bound - приоритет снижается, если он I/O bound - то повышается, чтобы сделать систему более отзывчивой

потоки на которых запускаются горутины - не исключение

Google
Roman
11.09.2018
13:54:44
потоки на которых запускаются горутины - не исключение
увы в выше приведённом примере в работе рендеринг горутины скорее всего будут помеxи из-за тысяч паралелльных AI actor горутин

Evgeny
11.09.2018
13:55:36
что значит помехи?

Roman
11.09.2018
13:56:03
Вообще-то нет. Те же двери на солярке дешевые
IPC всегда дороже и сложнее shared process memory

Evgeny
11.09.2018
13:56:17
это будет работать так, поток ОС выполяет горутину, считающую какую-нибудь математику - ОС понизит динамический приоритет

Roman
11.09.2018
13:56:28
что значит помехи?
потерянные кадры из-за того что выполняются AI акторы нежели rendering в нужное время

Evgeny
11.09.2018
13:57:12
в реальных системах это не решается приоритетами, менять приоритеты потоков руками это практически всегда ошибка разработчика, исключения очень редки

Roman
11.09.2018
13:57:25
IPC всегда дороже и сложнее shared process memory
Правильно сделанный ipc - нет. См solaris doors

Roman
11.09.2018
13:57:47
Правильно сделанный ipc - нет. См solaris doors
без понятия о Solaris'е, я к нему даже никогда не прикасался

Evgeny
11.09.2018
13:57:52
ты либо поставишь колом всю систему пользователя, либо у тебя какой-то поток не получит вовремя управление

Roman
11.09.2018
13:58:14
Правильно сделанный ipc - нет. См solaris doors
однако наивно предположу что под словами "правильно сделанный" уже кроется сложность

Roman
11.09.2018
14:00:11
Roman
11.09.2018
14:01:35
однако наивно предположу что под словами "правильно сделанный" уже кроется сложность
Там просто и изящно: процесс экспортирует набор своих функций. Вызывающий код оказывается в контексте вызываемого процесса

процессе?) удачи в IPC)
Да в чем проблема с ipc? Что ж вы так его демонизируете?

Roman
11.09.2018
14:03:52
если разные процессы то да, конечно

Да в чем проблема с ipc? Что ж вы так его демонизируете?
потому-что IPC на большинстве OS представляют собой многократные копии из контекстов туда сюда. Плюс сам код усложняется значительно, это вам не просто прочитать состояние переменной защищённой мьютексом

Google
Roman
11.09.2018
14:11:51
И никаких копий

Roman
11.09.2018
14:12:24
Кольцо в shm
shared memory это весчь прикольная, но не кросс-платформенная

Admin
ERROR: S client not available

Roman
11.09.2018
14:13:52
А где ее нет?
насколько мне известно на мобилках её нет совсем. А так она ещё и реализуется на разных системах совершенно по разному, там есть свои нюансы. Как-то очень давно занимался этой тематикой но уже забыл большинство деталей

Roman
11.09.2018
14:15:14
надо разбираться. Факт в любом случае что кросс-платформенный бескопромиссный shared memory это вам не переменную прочитать/записать... это гораздо сложнее

Roman
11.09.2018
14:16:10
Ну и копирование само по себе дешёвое

И оно становится заметным только на больших объемах

Кондр
11.09.2018
14:46:21
Перечитал и все ок

Roman
11.09.2018
14:50:22
stixlink
11.09.2018
14:56:22
подскажите, плиз, как можно убрать одинаковые значения в двух слайсах(значения которые есть в обоих слайса). кроме как в циклах?

Zver
11.09.2018
14:58:39
подскажите, плиз, как можно убрать одинаковые значения в двух слайсах(значения которые есть в обоих слайса). кроме как в циклах?
Только в циклах. Создать мапу, загнать туда значения из одного слайса и потом проветить вначения второго слайса. Хотя если мелкий слайс, то без мапы может быстрей выйти.

Fastumkruk ✅
11.09.2018
15:43:28
Привет, а куда пропал https://gopkg.in/telegram-bot-api.v4 ?

Kirill
11.09.2018
15:49:12
@toby3d вроде как получше запилил

Fastumkruk ✅
11.09.2018
15:50:17
@toby3d вроде как получше запилил
У меня уже не один проект на нем, привык. А библа тоби мне показалась сложноватой

Maxim
11.09.2018
15:52:50
Google
Maxim
11.09.2018
15:53:47
Работаю. Не всегда есть время. Плюс я доделываю сейчас биндинги паспорта

А так, вроде, @madgopher пощупал и даже остался доволен

Kirill
11.09.2018
15:55:40
а я тут к вам с оффтопным аккордеоном: https://github.com/kitlang/kit

Fastumkruk ✅
11.09.2018
16:02:04
Если корень сложности в примерах, то скоро запилю
Неплохо было бы побольше примеров, спасибо

Maxim
11.09.2018
16:02:49
Неплохо было бы побольше примеров, спасибо
API уже более-менее замораживается, так что как добью паспорт - займусь примерами

Сам механизм паспорта готов, нужно только оформить подобающе

Maxim
11.09.2018
16:07:11
что значит замораживается?
Приходит в стабильное состояние и практически не меняется с внесением новых фич

Kirill
11.09.2018
16:07:14
Maxim
11.09.2018
16:09:57
Жду примеров)
Без фидбека трудно понять что надо улучшить, так что - welcome: https://gitlab.com/toby3d/telegram

Fastumkruk ✅
11.09.2018
16:12:26
Без фидбека трудно понять что надо улучшить, так что - welcome: https://gitlab.com/toby3d/telegram
Элементарно нужно хотя бы показать авторизацию и ответ на ту или иную команду, как послать клавиатуру(обычную, инлайн) как обработать это все.

Страница 1388 из 1630