This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос Выполнение запросов MySQL [C#]

frytech

Участник портала
15 Янв 2022
128
13
53
Всем привет, назрел такой вопрос.
Меня интересует возможность реализации запросов к MySQL со стороны сервера асинхронно (не блокируя основной поток сервера рейджа), но при этом, чтобы все запросы выполнялись последовательно, в таком порядке, в котором сервер их вызывает. Пробовал использовать семафор, но там нет гарантии на исполнение правила FIFO. Кто подскажет, что можно сделать?
Думал еще о создании отдельного потока (как раз исключительно под нужды БД), в который передавались бы команды, но почему то мне кажется, что это я слишком заморачиваюсь и можно как то проще сделать, при этом, гарантируя безопасность и последовательность доступа к чтению/изменению данных. Как делать лучше?
 

DVM

Новый участник
1 Июн 2021
9
2
60
ну сделай очередь, пихай в нее запросы, и доставай например с другого потока для бд. посмотри в сторону producer consumer
 

frytech

Участник портала
15 Янв 2022
128
13
53
Вроде как все таки семафор для запросов к БД подходит под задачу, в целом, порядок посланного запроса не имеет значения, если у меня игроки тоже имеют свои семафоры
Кто знает другие варианты, подскажите)
 

Mercury_One

Участник портала
BackEnd developer
11 Фев 2021
38
19
82
Если совсем просто хочешь.
Напиши собственный хендлер для запросов, суй в очередь (лист), выполняй поочерёдно, переходя к следующему запросу по выполнению предыдущего.
 

DVM

Новый участник
1 Июн 2021
9
2
60
То тебе fifo надо, то порядок не имеет значения. Семафор позволяет получить доступ нескольким потокам в отличии от других синхронизаторов. Определись для начала что тебе надо
 

Randomchik

Старожил
BackEnd developer
19 Сен 2020
823
290
141
https://metanit.com/sharp/tutorial/4.7.php в принципе тебе это люди и сказали. Делаешь очередь и разгружаешь ее таймером в другом потоке, так же и логи работают на редейдже вроде
 
Последнее редактирование: