Я реализую алгоритм изменения асинхронной схемы google f1 онлайн с помощью c ++, который предполагает, что сервер 1 записывает данные в общее хранилище, а сервер 2 должен читать данные из общего хранилища в X секунды или умри .
Как мы можем реализовать это для сервера 2?
Самый безопасный способ, которым я могу сейчас придумать, это:
while(1) {
sleep(X/2);
globalLockGuard(); # even the server is not died,it can't write any data so it can't damage any data.
time1 = now();
loadFromSharedStorage();
if (now - time1 > x/2) {
die;
}
}
мои вопросы:
- надежен ли сон (Х / 2)? например, если он будет спать больше, чем х / 2 секунды в реальности?
- есть ли лучшее решение?