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