Я работаю над проектом, в котором отдельные области карты генерируются динамически или загружаются из файла, если они уже созданы и сохранены. Регионы загружаются/генерируются только по мере необходимости и сохраняются и отбрасываются, когда их больше нет. Существует несколько различных задач, которые будут использовать одну или несколько областей этой карты для различных целей. Например, одна из этих задач будет заключаться в том, чтобы нарисовать все видимые в настоящее время области (около 9 в любой момент времени). Другим является получение информации или даже изменение регионов. Проблема в том, что эти задачи могут работать или не работать с теми же областями, что и другие задачи.Управление пулом генерируемых объектов
Поскольку эти регионы довольно велики и являются дорогостоящими для создания, было бы проблематично (по этим и другим причинам) использовать разные копии для каждой задачи. Скорее, я думаю, было бы неплохо создать и управлять пулом загруженных в настоящее время регионов. Новые задачи сначала будут проверять пул для их региона. Затем они могут использовать его, если он существует, или создать новый, и добавить его в пул.
При условии, что это работает, как мне управлять этим бассейном? Как я могу определить, что регион больше не нужен никакими задачами и может быть безопасно отброшен? Неужели я глуп и это изнуряюще?
Я использую C#, если это важно для всех.
Редактировать: Теперь, когда я бодрствую, было бы так же просто, как увеличивать счетчик в каждом регионе для каждого используемого им места? затем отбрасывая его, когда счетчик достигает 0?
Являются ли объекты региона неизменяемыми после создания? –
К сожалению нет. Определенная задача будет изменять регионы. В этом случае я, вероятно, подниму флаг «update» в объекте region, а затем обновить все остальные задачи, используя его. – Camander