Я пытаюсь смоделировать децентрализованную систему, но у меня возникают проблемы с моделированием с учетом реальных параметров.
Реальный мир:
Моделирование:
Является ли создание потока для каждого модуля правильным подходом? Теоретически это кажется правильным подходом, но на практике он ограничивается примерно 1000 потоков.
Ваш контекст идеально совпадает с моделью актера
https://en.wikipedia.org/wiki/Actor_model
Объяснить это через ответ невозможно, начните с вики-ссылки и найдите какую-нибудь реализацию на языке, который вы используете, но он делает то, что вам нужно, вы можете моделировать миллионы «изолированных состояний» и управлять параллелизмом их мутаций, используя очень мало ресурсов (вы должны быть в состоянии достичь 1K актеров с очень небольшим количеством потоков, может быть, также 2).
Кроме того, в настоящее время многие языки предлагают (в своем вкусе) версию облегченных потоков, которые можно использовать для уменьшения количества используемых реальных потоков (горутина, сопрограммы kotlin, java-волокна и т. д.).
Учитывая, что ни у одного потребительского процессора нет такого количества ядер, в конце концов он будет запланирован, и произойдет переключение контекста. Хотя таким образом он абстрагируется, вы можете просто повторно реализовать эту часть логики через цикл обработки событий, имея N (= 10 тыс.) экземпляров класса с функцией
tick
. Многопоточный цикл событий обеспечит некоторый уровень параллелизма.