У меня есть большое количество процессов, которые мне нужно отслеживать в наборе ets, а затем случайным образом выбирать отдельные процессы.Поэтому я создал набор следующим образом:
:ets.new(:pid_lookup, [:set, :protected, :named_table])
, а затем для аргумента давайте просто добавим self()
в него 1000 раз:
Enum.map 1..1000, fn x -> :ets.insert(:pid_lookup, {x, self()}) end
Теперь мне нужно выбрать один случайным образом.Я знаю, что мог бы просто выбрать случайный, используя :ets.lookup(:pid_lookup, :rand.uniform(1000))
, но что, если я заранее не знаю размер набора (в вышеупомянутом случае, 1000)?
Как узнатьразмер набора ets?И / или есть ли лучший способ выбрать случайный pid из структуры данных ets?