У меня есть приложение, которое прослушивает конечную точку веб-сокета, обрабатывает полученные от нее данные и сохраняет их в базе данных .
Проблема состояния гонкивозникает, когда два обратных вызова вызываются одновременно (например, одна задача может начать обработку, затем другая задача может начать обработку и обновление базы данных, затем первая задача может обновить базу данных - таким образом, в конце концов обновления базы данных вышли из строя).
Решение Я думал о том, чтобы записать точное время вызова обратного вызова, обработать данные, затем прикрепить время к данным, переданным в базу данных, ив базе данных сравните это время с последним временем обновления и действуйте соответственно. Одна возможная проблема Я думал о том, что время может быть записано не по порядку (например: рассмотрим сценарий, когда вызывается первый обратный вызов, затем вызывается второй обратный вызов, и записывается время, затемвремя записывается для первого обратного вызова).
Как бы вы сделали это правильно?Решения этой проблемы или другие способы ее решения?
РЕДАКТИРОВАТЬ : Чтобы быть более конкретным, поскольку я намерен, чтобы программа работала в режиме реального времени, насколько это возможно, яХотелось бы разрешить обработку самого современного обратного вызова без задержки (не дожидаясь полной обработки всех предыдущих обратных вызовов), но чтобы гарантировать, что конечный результат обработки (как записано в базе данных) придерживаетсяв порядке поступления обратных вызовов (не поврежден)