Сообщение Re[3]: Помогите с многопоточным кодом от 06.09.2022 20:54
Изменено 06.09.2022 21:01 StanislavK
Re[3]: Помогите с многопоточным кодом
Здравствуйте, vsb, Вы писали:
vsb>Не, у меня там в реальном коде немного по-другому, в это не упирается.
vsb>Если интересно — полный код, но там специфика UUID формата. Генерацию случайного числа я заменил на счетчик.
А чем не устраивает то, что делается в randomUUID? Типа боитесь что генератор повторится?
Ну ок. В общем, тогда задача сводится к генерации long который не повторяется и у всех потоков разный. Сделать это проще всего если просто заранее решить сколько есть потоков и разделать для них диапазоны long-а. Потом просто в каждом их них делать инкремент — никаких синхронизаций и системных вызовов.
vsb>Первый вариант выдаёт 2 млн значений в секунду, второй вариант выдаёт около 3, формат ограничивает 4 млн в секунду.
Это ваще повезло. SecureRandom на сервере, скорее всего ваще ляжет. Его надо только для сида использовать.
vsb>Не, у меня там в реальном коде немного по-другому, в это не упирается.
vsb>Если интересно — полный код, но там специфика UUID формата. Генерацию случайного числа я заменил на счетчик.
А чем не устраивает то, что делается в randomUUID? Типа боитесь что генератор повторится?
Ну ок. В общем, тогда задача сводится к генерации long который не повторяется и у всех потоков разный. Сделать это проще всего если просто заранее решить сколько есть потоков и разделать для них диапазоны long-а. Потом просто в каждом их них делать инкремент — никаких синхронизаций и системных вызовов.
vsb>Первый вариант выдаёт 2 млн значений в секунду, второй вариант выдаёт около 3, формат ограничивает 4 млн в секунду.
Это ваще повезло. SecureRandom на сервере, скорее всего ваще ляжет. Его надо только для сида использовать.
Re[3]: Помогите с многопоточным кодом
Здравствуйте, vsb, Вы писали:
vsb>Не, у меня там в реальном коде немного по-другому, в это не упирается.
vsb>Если интересно — полный код, но там специфика UUID формата. Генерацию случайного числа я заменил на счетчик.
А чем не устраивает то, что делается в randomUUID? Типа боитесь что генератор повторится?
Ну ок. В общем, тогда задача сводится к генерации long который не повторяется и у всех потоков разный. Сделать это проще всего если просто заранее решить сколько есть потоков и разделить для них диапазоны long-а. Потом просто в каждом их них делать инкремент — никаких синхронизаций и системных вызовов.
vsb>Первый вариант выдаёт 2 млн значений в секунду, второй вариант выдаёт около 3, формат ограничивает 4 млн в секунду.
Это ваще повезло. SecureRandom на сервере, скорее всего ваще ляжет. Его надо только для сида использовать.
vsb>Не, у меня там в реальном коде немного по-другому, в это не упирается.
vsb>Если интересно — полный код, но там специфика UUID формата. Генерацию случайного числа я заменил на счетчик.
А чем не устраивает то, что делается в randomUUID? Типа боитесь что генератор повторится?
Ну ок. В общем, тогда задача сводится к генерации long который не повторяется и у всех потоков разный. Сделать это проще всего если просто заранее решить сколько есть потоков и разделить для них диапазоны long-а. Потом просто в каждом их них делать инкремент — никаких синхронизаций и системных вызовов.
vsb>Первый вариант выдаёт 2 млн значений в секунду, второй вариант выдаёт около 3, формат ограничивает 4 млн в секунду.
Это ваще повезло. SecureRandom на сервере, скорее всего ваще ляжет. Его надо только для сида использовать.