@Alex84 Привет, так как нету репутации не смог ответить в лс, так что отвечу здесь
Афигеть, спасибо большое! Советы прям пушка, ответил на многое что меня интересовало) Спасибо еще раз за советы, буду дальше осваивать bas, таких людей как вы можно редко встретить)
Многопоток при работе с базой MySQL
-
Потоки скрипта берут строки из удаленной базы MySQL. Время работы потока может доходить до 2-х минут, нужно чтобы в это время другой поток не взял ту же самую строчку. Искал по форуму, видел разные варианты. Если делать дополнительный столбец и ставить там метку, что строчка в работе, может произойти ситуация, что поток закончится с непредвиденной ошибкой, и строчка останется залоченной. То же самое может произойти, если в глобальную переменную записывать id строк, которые в работе.
Может есть еще вариант, как это реализовать?
-
@zelenberg said in Многопоток при работе с базой MySQL:
Потоки скрипта берут строки из удаленной базы MySQL. Время работы потока может доходить до 2-х минут, нужно чтобы в это время другой поток не взял ту же самую строчку. Искал по форуму, видел разные варианты. Если делать дополнительный столбец и ставить там метку, что строчка в работе, может произойти ситуация, что поток закончится с непредвиденной ошибкой, и строчка останется залоченной. То же самое может произойти, если в глобальную переменную записывать id строк, которые в работе.
Может есть еще вариант, как это реализовать?
В чем сложность обернуть логику в функцию? И запускать ее с игнорированием ошибок и если будет какая то ошибка, то откатывать что-то в БД? Есть же еще и транзакции.
Также можно брать из БД запись, лочить ее и если поток грохнется, то соединение с БД закрывать и блокировка должна сняться автоматически(зависит от типа блокировки).https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html