@FastSpace said in Проблема при многопоточной работе с ресурсом:
@sayado колличество элементов в ресурсе. Меньше чем x, ждать пока появится больше
?? как мне "ждать пока появится больше"?
Задача: чтоб каждый элемент из ресурса был использован к примеру, 20 раз, в разных потоках, с кол-вом одновременных использований = 1.
Проблема в том, что взятый элемент из ресурса становится доступным для других потоков только после fail/success. После того как элемент из ресурса использован - далее он не требуется, но поток еще выполняет очень много действий (прежде, чем будет fail/success), и логичнее было бы, чтоб этот элемент взял другой поток. Как это сделать?
Вероятно, надо писать собственную логику раздачи данных потокам.
В принципе, задача не выглядит сложной для человека, кто хорошо ориентируется во внутреннем API BAS. Я не такой человек.
Рекомендую сразу писать так, чтобы можно было оформить в виде модуля, это заставит кодера сначала думать, а потом делать. Что всегда хорошо.
Основная проблема будет, что надо сообщать сущности, которая выдает данные, что элемент из ресурса освобожден. И сложность не в реализации логики, а в том, чтобы не накосячить в ней.
На вскидку я вижу внешнее API так:
С внутренней реализацией надо думать после проектирования внешнего API.