Size: a a a

2020 February 24

PG

Pïg Grëënëst in ErlangRus
Simon
коллеги, такой вопрос

есть необходимость запустить большое кол-во одинаковых потоков
потоки регистрируются в системе по имени - {local, atom()}
кол-во атомов в системе ограничено и как я понял, единожды созданный атом - не удаляется

как быть ?
вы генерите атомы для процессов?
источник

S

Simon in ErlangRus
склоняюсь к варианту {global, term()}
источник

PG

Pïg Grëënëst in ErlangRus
нормальный вариант
источник

PG

Pïg Grëënëst in ErlangRus
а можно observer в global научить?
источник

DZ

Danil Zagoskin in ErlangRus
Simon
склоняюсь к варианту {global, term()}
Главное — не использовать distribution
источник

AK

Aleksey Kluchnikov in ErlangRus
Я https://github.com/stofel/ecldb использую, кластерный с шардингом и решардингом и гарантией целостности очереди доставки сообщений в процесс
источник

a

arikai in ErlangRus
Simon
коллеги, такой вопрос

есть необходимость запустить большое кол-во одинаковых потоков
потоки регистрируются в системе по имени - {local, atom()}
кол-во атомов в системе ограничено и как я понял, единожды созданный атом - не удаляется

как быть ?
Так это что за потоки? Воркеры, выполняющие типовые задачи?
источник

a

arikai in ErlangRus
Потому что такие вещи регистрировать по имени нужно только в крайнем и продуманном случае
источник

AB

Alex Bubnov in ErlangRus
Simon
коллеги, такой вопрос

есть необходимость запустить большое кол-во одинаковых потоков
потоки регистрируются в системе по имени - {local, atom()}
кол-во атомов в системе ограничено и как я понял, единожды созданный атом - не удаляется

как быть ?
Возьми gen_tracker, если у процессов значимое время жизни. Если они one-shot - просто не регистрируй
источник

AK

Aleksey Kluchnikov in ErlangRus
А еще, если все процессы дети супервизора, то можно регистрировать прямо супервизором, через child_id
источник

S

Simon in ErlangRus
arikai
Потому что такие вещи регистрировать по имени нужно только в крайнем и продуманном случае
gen_server:start_link(…) просит указать имя потока
других регистраций я не делаю
источник

AK

Aleksey Kluchnikov in ErlangRus
Simon
gen_server:start_link(…) просит указать имя потока
других регистраций я не делаю
Так можно если потоков не мнго и у них фиксированые имена. если имена потоков динамические, то так нельзя
источник

AK

Aleksey Kluchnikov in ErlangRus
до определенного пердела можно а потом нельзя :)
источник

S

Simon in ErlangRus
какие есть варианты ?
источник

AK

Aleksey Kluchnikov in ErlangRus
источник

YZ

Yuri Zhloba in ErlangRus
Simon
gen_server:start_link(…) просит указать имя потока
других регистраций я не делаю
Там есть разные start_link, есть такой, который не просит
источник

AK

Aleksey Kluchnikov in ErlangRus
в https://erlang.org/doc/man/supervisor.html#type-child_spec указываешь id, его можно бинарный
источник

S

Simon in ErlangRus
Aleksey Kluchnikov
в https://erlang.org/doc/man/supervisor.html#type-child_spec указываешь id, его можно бинарный
так и делаю
источник

AK

Aleksey Kluchnikov in ErlangRus
потом трюк, для выяснения пида делаешь снова start_child, если процесс есть то он вернет {already_started, Pid}
источник

S

Simon in ErlangRus
Yuri Zhloba
Там есть разные start_link, есть такой, который не просит
точно)) не обратил внимания
источник