Re: Генерирование уникальный значений в разных процессах. er
От: Курилка Россия http://kirya.narod.ru/
Дата: 09.05.09 12:29
Оценка: 16 (1)
Здравствуйте, Аноним, Вы писали:

А>1) Очень элементарный, беру системное время в микросекундах и из него конструирую число. Мне пока так и не понятно, если система работает на одной машине может ли получится такая ситуация что в разных процессах erlang:now(). вернет одно и тоже значение? Я проводил опыты, вроде бы все значения были уникальные (с разницей в 1-3 микросекунды). Но всё равно уверенности нет, поэтому это первый вопрос.

Может просто доки читать?

А>2) если 1) работает так как мне хотелось бы, то как быть с системой работающей на нескольких машинах? — в этом случае время может сгенерироваться одинаковое. Перестановка времени на каждой машине, конечно неприемлема). Поэтому в данном случае я в каждый процесс запускаю некоторое число (внутри числа генерятся просто добавляя единицу постепенно) след образом: в первый процесс N, во второй N+m, третий N+2*m и т.д. так как всего кол-во чисел в процессе врятли превысит 1 000 000, то m=1 000 000 (однако каким бы m я не взял, всё равно есть хоть и маленькая, но положительная вероятность, что кол-во чисел окажется больше m ив конечном итоге где может произойти роковое дублирование), а при очередном вызове F, я передаю ему параметром новое значение N, равное N+n*(k+1), где k — кол-во созданных процессов.


Вполне себе вариант (непонятно, почему он "другой", если без 1-го работать не может), правда не совсем понятно почему именно целое нужно. Для простых уидов люди используют {node(), now()}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.