
Alexander
11.09.2018
13:32:05

Roman
11.09.2018
13:32:24

Roman
11.09.2018
13:33:08

Roman
11.09.2018
13:33:12

Google

Roman
11.09.2018
13:33:32

Алексей
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 просто неизбежим

Алексей
11.09.2018
13:37:24
мьютекс - не самый низкоуровневый

Roman
11.09.2018
13:37:55

Алексей
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

Алексей
11.09.2018
13:40:29
то есть можно в теории запилить реализацию го, в которой вместо горутин будут тупо потоки
и никто особо не заметит разницы, пока этих потоков не станет слишком много

Roman
11.09.2018
13:42:15

Алексей
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

Алексей
11.09.2018
13:45:29
типа потокам в пулле назначить разные приоритеты и мапить более приоритетные горутины на более приоритетные потоки
(но так делать конечно же не надо)


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:53:57

Roman
11.09.2018
13:54:44

Roman
11.09.2018
13:54:46

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

Roman
11.09.2018
13:56:03

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

Roman
11.09.2018
13:57:47

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

Roman
11.09.2018
13:58:14

Vadim
11.09.2018
13:59:06

Roman
11.09.2018
14:00:11

Roman
11.09.2018
14:01:35

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

Roman
11.09.2018
14:11:45

Google

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

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

Roman
11.09.2018
14:12:37

Admin
ERROR: S client not available

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

Roman
11.09.2018
14:14:25

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

stixlink
11.09.2018
15:09:36

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

Aleksandr
11.09.2018
15:52:49

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
Сам механизм паспорта готов, нужно только оформить подобающе

Fastumkruk ✅
11.09.2018
16:06:31

Maxim
11.09.2018
16:07:11

Kirill
11.09.2018
16:07:14

Fastumkruk ✅
11.09.2018
16:07:40

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

Fastumkruk ✅
11.09.2018
16:12:26