FireFenix писал(а):int(Последний сгенерированный ID) + 1
Alec писал(а):UUID?
Now().ToString("yyyy_MM_dd HH_mm_ss ffffff")
Qwertiy писал(а):А использовать в качестве идентификатора ID процесса - не вариант?
jangle писал(а):По PID процесса копии различить не удастся, поскольку может быть ситуация, когда один из процессов аварийно завершился, а в хранилище остались его данные, под его ID. И новый процесс под этим PID повредит свои данные, записав их в уже занятую область памяти.
Qwertiy писал(а):
- Код: Выделить всё
Now().ToString("yyyy_MM_dd HH_mm_ss ffffff")
Годится?
jangle писал(а):С полной датой до миллисекунд мне нравится, главное что быстрый способ.
Хакер писал(а):Почему jangle считает, что временная отметка даст гарантированно уникальный результат?
Module All
Public Sub Main()
For Q As Integer = 0 To 128
System.Diagnostics.Process.Start("cmd", "/k echo >> time.txt " & Now().ToString("yyyy_MM_dd HH_mm_ss ffffff") & vbCrLf)
Next Q
End Sub
End Module
2011_08_19 21_46_26 187500
2011_08_19 21_46_26 406250
2011_08_19 21_46_26 359375
2011_08_19 21_46_26 437500
2011_08_19 21_46_26 515625
2011_08_19 21_46_26 671875
2011_08_19 21_46_26 718750
2011_08_19 21_46_27 078125
2011_08_19 21_46_26 765625
2011_08_19 21_46_26 921875
2011_08_19 21_46_27 203125
2011_08_19 21_46_27 312500
2011_08_19 21_46_27 406250
2011_08_19 21_46_27 546875
2011_08_19 21_46_27 734375
2011_08_19 21_46_28 171875
2011_08_19 21_46_27 906250
2011_08_19 21_46_28 484375
2011_08_19 21_46_28 343750
2011_08_19 21_46_28 578125
2011_08_19 21_46_28 703125
2011_08_19 21_46_29 140625
2011_08_19 21_46_28 859375
2011_08_19 21_46_28 796875
2011_08_19 21_46_28 984375
2011_08_19 21_46_29 218750
2011_08_19 21_46_29 437500
2011_08_19 21_46_29 843750
2011_08_19 21_46_29 609375
2011_08_19 21_46_30 218750
2011_08_19 21_46_30 015625
2011_08_19 21_46_30 468750
2011_08_19 21_46_29 953125
2011_08_19 21_46_30 125000
2011_08_19 21_46_30 921875
2011_08_19 21_46_31 328125
2011_08_19 21_46_30 328125
2011_08_19 21_46_30 578125
2011_08_19 21_46_31 875000
2011_08_19 21_46_32 140625
2011_08_19 21_46_32 734375
2011_08_19 21_46_32 343750
2011_08_19 21_46_33 375000
2011_08_19 21_46_33 656250
2011_08_19 21_46_32 937500
2011_08_19 21_46_33 859375
2011_08_19 21_46_34 078125
2011_08_19 21_46_34 390625
2011_08_19 21_46_34 515625
2011_08_19 21_46_34 859375
2011_08_19 21_46_35 015625
2011_08_19 21_46_35 281250
2011_08_19 21_46_35 453125
2011_08_19 21_46_36 437500
2011_08_19 21_46_35 625000
2011_08_19 21_46_36 187500
2011_08_19 21_46_35 937500
2011_08_19 21_46_36 625000
2011_08_19 21_46_36 281250
2011_08_19 21_46_37 062500
2011_08_19 21_46_37 921875
2011_08_19 21_46_37 562500
2011_08_19 21_46_38 484375
2011_08_19 21_46_38 203125
2011_08_19 21_46_39 093750
2011_08_19 21_46_39 281250
2011_08_19 21_46_38 890625
2011_08_19 21_46_40 156250
2011_08_19 21_46_39 453125
2011_08_19 21_46_40 421875
2011_08_19 21_46_40 750000
2011_08_19 21_46_39 687500
2011_08_19 21_46_42 578125
2011_08_19 21_46_42 312500
2011_08_19 21_46_41 703125
2011_08_19 21_46_40 906250
2011_08_19 21_46_42 015625
2011_08_19 21_46_42 765625
2011_08_19 21_46_43 078125
2011_08_19 21_46_43 343750
2011_08_19 21_46_43 750000
2011_08_19 21_46_45 625000
2011_08_19 21_46_44 421875
2011_08_19 21_46_43 890625
2011_08_19 21_46_45 031250
2011_08_19 21_46_44 750000
2011_08_19 21_46_45 359375
2011_08_19 21_46_45 968750
2011_08_19 21_46_45 750000
2011_08_19 21_46_46 484375
2011_08_19 21_46_46 890625
2011_08_19 21_46_46 718750
2011_08_19 21_46_46 203125
2011_08_19 21_46_47 109375
2011_08_19 21_46_47 437500
2011_08_19 21_46_48 531250
2011_08_19 21_46_48 250000
2011_08_19 21_46_47 656250
2011_08_19 21_46_47 828125
2011_08_19 21_46_49 312500
2011_08_19 21_46_49 468750
2011_08_19 21_46_49 062500
2011_08_19 21_46_49 750000
2011_08_19 21_46_50 281250
2011_08_19 21_46_49 921875
2011_08_19 21_46_52 015625
2011_08_19 21_46_51 125000
2011_08_19 21_46_50 546875
2011_08_19 21_46_52 437500
2011_08_19 21_46_52 625000
2011_08_19 21_46_52 937500
2011_08_19 21_46_53 390625
2011_08_19 21_46_53 812500
2011_08_19 21_46_54 218750
2011_08_19 21_46_54 593750
2011_08_19 21_46_55 578125
2011_08_19 21_46_55 328125
2011_08_19 21_46_55 109375
2011_08_19 21_46_56 031250
2011_08_19 21_46_57 062500
2011_08_19 21_46_55 875000
2011_08_19 21_46_56 562500
2011_08_19 21_46_57 843750
2011_08_19 21_46_57 484375
2011_08_19 21_46_58 390625
2011_08_19 21_46_59 265625
2011_08_19 21_46_59 000000
2011_08_19 21_46_58 656250
Qwertiy писал(а):Покажите, как запустить два процесса в одно и то же время.
Хакер писал(а):Причём тут запуск процессов?
jangle писал(а):Допустим работает некий процесс в системе, и он сохраняет в некое абстрактное хранилище свою информацию. При этом в системе, может быть запущены десятки или сотни копий этого процесса, а хранилище на всех одно. Поэтому каждый экземпляр процесса генерирует уникальный айдишник, и по нему определяет, что данные под этим ID в хранилище принадлежат ему, а не другой копии.
Хакер писал(а):Это писал не ты. Я же имею претензии к твоим словам. Посмотри ещё раз.
Qwertiy писал(а):Если требуется уникальный идентификатор для каждого процесса, то, при условии, что берётся текущее время, для совпадения идентификаторов необходимо, чтобы эти процессы были запущены одновременно.
Хакер писал(а):На основании чего сделан такой вывод?
Хакер писал(а):Почему хранилище не может обеспечить раздачу последовательных уникальных идентификаторов?
Mikle писал(а):А если между запусками процессов часы были переведены?
Mikle писал(а):Хакер писал(а):Почему хранилище не может обеспечить раздачу последовательных уникальных идентификаторов?
Хакер писал(а):Почему jangle считает, что временная отметка даст гарантированно уникальный результат?
Почему хранилище не может обеспечить раздачу последовательных уникальных идентификаторов?
jangle писал(а):
Если запуск копий различать с точностью до микросекунды, разве этого недостаточно?
Mikle писал(а):А если между запусками процессов часы были переведены?Хакер писал(а):Почему хранилище не может обеспечить раздачу последовательных уникальных идентификаторов?
Присоединяюсь к вопросу.
Proxy писал(а):летнее время там, где осталось, влечёт за собой только один раз в год повтор времени
Mikle писал(а):Есть ещё синхронизация времени через интернет.
Вообще, если низкая вероятность считать доводом, тогда можно при старте процесса просто генерировать рэндомный 128-битный ключ. Вероятность случайного совпадения будет ещё ниже.
jangle писал(а):Синхронизация через интернет не устроит, потому что доступ в сеть может прекратиться, да и медленно это.
Mikle писал(а):Я не это имел ввиду. Есть синхронизация времени через интернет, и это может с некоторой не очень маленькой вероятностью породить два процесса с одним ID в случае использования в качестве ID времени запуска.
jangle писал(а):Допустим нет доступа к коду функции которая управляет хранилищем, а есть три функции вызываемые из внешней библиотеки: Save, Load, Delete
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 50