Сообщение Транзакция с помощью рандома и задержки от 23.03.2025 9:10
Изменено 23.03.2025 9:30 Shmj
Транзакция с помощью рандома и задержки
Ну давайте с простого. Имеем:
1. Функция чтения (ну пусть атомарно).
2. Функция записи (так же атомарно).
3. ГСЧ.
4. Функция задержки времени.
Нужно:
1. Считать число (изначально 0).
2. Увеличить число на 1.
3. Записать число.
Но при этом нужно чтобы все это корректно работало в многопоточной среде. Т.е. сколько было вызовов чтения — столько должно быть установлено значение счетчика.
Добавлю что считывать и записывать — можно произвольное значение, а не только числа.
Можно ли как-то гарантировать, не имея мьютексов и пр. блокировок — а только 4 функции из списка?
1. Функция чтения (ну пусть атомарно).
2. Функция записи (так же атомарно).
3. ГСЧ.
4. Функция задержки времени.
Нужно:
1. Считать число (изначально 0).
2. Увеличить число на 1.
3. Записать число.
Но при этом нужно чтобы все это корректно работало в многопоточной среде. Т.е. сколько было вызовов чтения — столько должно быть установлено значение счетчика.
Добавлю что считывать и записывать — можно произвольное значение, а не только числа.
Можно ли как-то гарантировать, не имея мьютексов и пр. блокировок — а только 4 функции из списка?
Транзакция с помощью рандома и задержки
Ну давайте с простого. Имеем:
1. Функция чтения (ну пусть атомарно).
2. Функция записи (так же атомарно).
3. ГСЧ.
4. Функция задержки времени.
Нужно:
1. Считать число (изначально 0).
2. Увеличить число на 1.
3. Записать число.
Но при этом нужно чтобы все это корректно работало в многопоточной среде. Т.е. сколько было вызовов чтения — столько должно быть установлено значение счетчика.
Добавлю что считывать и записывать — можно произвольное значение, а не только числа.
Так же можно сузить определение гарантированности — считаем что GUID т.е. 16 случайных байт — гарантированно уникальный, что второй такой же не будет создан за время существования Вселенной.
Можно ли как-то гарантировать, не имея мьютексов и пр. блокировок — а только 4 функции из списка?
1. Функция чтения (ну пусть атомарно).
2. Функция записи (так же атомарно).
3. ГСЧ.
4. Функция задержки времени.
Нужно:
1. Считать число (изначально 0).
2. Увеличить число на 1.
3. Записать число.
Но при этом нужно чтобы все это корректно работало в многопоточной среде. Т.е. сколько было вызовов чтения — столько должно быть установлено значение счетчика.
Добавлю что считывать и записывать — можно произвольное значение, а не только числа.
Так же можно сузить определение гарантированности — считаем что GUID т.е. 16 случайных байт — гарантированно уникальный, что второй такой же не будет создан за время существования Вселенной.
Можно ли как-то гарантировать, не имея мьютексов и пр. блокировок — а только 4 функции из списка?