185 похожих чатов

А зачем атомики в snowflake?

16 ответов

17 просмотров

Чтобы реализовать спецификацию snowflake без блокировок. Никакие функции времени не гарантируют уникальности, в случае многопоточности, и для этого есть unique_integer.

Maksim-Lapshin Автор вопроса
Petr Kozorezov
Чтобы реализовать спецификацию snowflake без блоки...

а persistent_term зачем? Тебе же нужно время и какой-то ещё инкремент в рамках текущего времени.

Maksim Lapshin
а persistent_term зачем? Тебе же нужно время и ка...

Ну инкремент считается через atomic, ссылку на который нужно где-то хранить. Вот в persistent_term эта ссылка один раз кладётся и потом используется.

Petr Kozorezov
Ну инкремент считается через atomic, ссылку на кот...

А разве согласно спецификации atomic не должен ресетиться каждый атом времени?

Petr Kozorezov
а где такое написано?

я не уверен что это в спеке, но в твиттерской реализации они ресетят каждую милисекунду

Źmićer Rubinštejn
я не уверен что это в спеке, но в твиттерской реал...

Ну вот в либе и реализуется это ресет. Только это в спеке snowflake а не атомиков.

Petr Kozorezov
Ну вот в либе и реализуется это ресет. Только это ...

я почему-то подумал что раз ты хранишь в persistant_term - то не ресетишь.

Maksim-Lapshin Автор вопроса
Źmićer Rubinštejn
А разве согласно спецификации atomic не должен рес...

а зачем? Что пойдет не так, если делать не по такому описанию?

Maksim Lapshin
а зачем? Что пойдет не так, если делать не по тако...

Для меня всегда это было загадкой. Помоему крутить до overflow экономит пару тактов

Maksim Lapshin
а зачем? Что пойдет не так, если делать не по тако...

Да, можно и не ресетить. Но по спеке ресет есть.

Maksim-Lapshin Автор вопроса
Źmićer Rubinštejn
Для меня всегда это было загадкой. Помоему крутить...

Мне кажется, что сильно больше. Ведь надо запомнить предыдущее значение времени и с ним сравнивать. Зачем это делать - не очень ясно. Откуда такое могло взяться - элементарно ясно. В libevent гораздо удобнее в начале цикла вычислить время и потом всем инкрементить.

Maksim-Lapshin Автор вопроса
Petr Kozorezov
Да, можно и не ресетить. Но по спеке ресет есть.

да вот я и хочу понять: хоть какая-то проблема от нересета есть?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта