Константин Теплоухов, я не знаю. Дело наверное не в локе. А в том что кто-то либо сильно часто долбит по этому локу. Либо просто очень долго процессит 40к элементов. Вот эти версии надо проверить. Я все. Идеи закончились. Давай с тебя логи и сорцы.
Попробуй логгировать в файл. Возможно за секунду до падения там было 80к значений. Я не знаю как связано падение но если ты пишешь что на весь софт есть только 1 разделяемый ресурс List то возможно есть причина с ним связанная. Другие потоки плющит от его размера например. Квадратичная сложность. На 40к проглатывают. На 80к - подавились и упали. В качестве примера 40 в квадрате - это 1600 а 80 в квадрате это 6400 попугаев.
Константин Теплоухов, у тебя тема - многопоточность. Тегнул топик да?
Так вот. Сколько потоков у тебя трогают этот List. И как они друг-с другом это согласовывают?
Если клеточек мало (допустим менше 200) то задачу можно решить комбинаторно. Просто генерируя все сочетания клеток и проверяя что прямоугольник "получился". Но формула здесь экспоненциальная поскольку добавление каждого очередной клеточки домножает количество проверяемых комбинаций.
Еще вариант - генетика. Мы случайно формируем прямоугольники. И пытаемся их улучшить. И выбираем лучший прямоугольник который снова участвует в отборе. Здесь асимптоматику лучше но алгоритм будет сложнее.
Ramon1979, записывай пароли в блокнотик. И храни в сейфе. И еще лучше в двух местах. Глупо также пользоваться кошельком для паролей на жестком диске, не имея стратегии восстановления если диску придут кранты. Я вот просто копирую всё раз в неделю. И у меня может быть только потеря той информации которую я внес за несколько дней. Старое - хранится вечно.
Если коснулись композиции - то уже можно перечислять не свойства ООП а шаблоны которые порождены ООП-мыслью. Сколько их там? Дай бох памяти. Когда я читал банду четырех было около 30. Щас уже - больше создано.
Ну... в нашем случае не надо ничего отливать в камень. И процесс обучения нашего черного ящика будет непрерывным и бесконечным. Собственно изюминка этого алгоритма 1-2-3 или камень-ножницы будет в том что нельзя выделить фазу обучения и фазу собственно игры. Идет "разведка боем".
Я почему говорю "черный ящик", потому что не хочу привязывать игру сразу к recursive NN, или к марковским сетям. Я просто акцентирую пока на внешних требованиях.
Если автор хочет - он конечно может использовать термин нейросеть. Но я-бы предложил чтобы введение нейросети было обоснованным. Хотя я лично не против. Просто как инженер-хозяйственник я предпочитаю исчерпать простые варианты.