@Zack9 said in Работа с базой в многопотоке:
В Басе в настройках базы почему-то разделена галка на обновление ресурса. Хотя по идеи ресурс также как и база сразу должен обновляться. Но в басе чтобы обновился и ресурс, надо отдельно ещё галку поставить.
В действиях записи данных в базу можно выбрать, сразу обновить данные в базе данных или только после завершения потока.
Ресурс сохраняет информацию об использовании данных отдельно, что бы можно было выполнить условия "успешных и неудачных выполнений", более подробно я описывал это здесь:
https://community.bablosoft.com/topic/7811/странно-работает-удалить-текущий-элемент/6
Для чего это сделано, потому что обновление ресурса будет более затратно по производительности? И сможет бас также миллион строк тянуть, если ресурс с базой обновлять надо будет?
Ресурс для экономии получает данные кусками, по 100 000 строк (вроде). Так что на производительность это не должно повлиять.
В конце концов создайте необходимую логику без использования ресурсов, если не нравится реализация их работы, ни кто же не заставляет в обязательном порядке использовать ресурсы. Это всего лишь инструмент, один из многих. Вы можете просто создать дополнительную колонку "lock" с булевом, для блокировки элемента, что бы исключить получения этих данных в других потоках.
Сначала получаю путь ресурса. Потом в нем (ну то есть в подпапке) ищу все папки с профилями и получаю массив и потом ссылаюсь на конкретную папку по индексу. После чего делаю проверку если индекс больше количества элементов в массиве то обнуляю, иначе ++ . Индекс - глобальная переменная и я так понял ее же видят все потоки и везде она обновляется. Проблема в том что все потоки берут тот же самый профиль. Я так понимаю что скорее всего оно не успевает все махинации проделывать ибо увеличения индекса идет даже не сразу после того как применился профиль и потом все попадают на индекс 0 (т.е первый профиль) а потом все увеличивают и так идут дальше.

