Есть класс мира, в котором находится словарик форм жизни. Каждый Update в классе мира вызывается foreach, который перебирает все формы жизни и производит с ними некоторые действия(изменение полей ботов, выполнение их методов и т.д.)
Также в цикле foreach может происходить создание новых форм жизни, их удаление и занесение новых в перебираемый словарик(!)
Код вы можете видеть ниже (значительно упрощённый):
public class LifeForm
{
// реализация класса формы жизни
}
public class World
{
Dictionary<long, LifeForm> LifeForms;
private void Update()
{
foreach (LifeForm bot in LifeForms.Values.ToList())
{
// обновление данных бота,создание и добавление новых ботов в наш Dictionary
}
}
}
Одна итерация foreach проходит быстро и занимает примерно 1-2мс. Но при 10000+ форм жизни в словарике на его обновление уходит более 5 секунд.
Само по себе обновление словарика в единичной итерации foreach требует очень мало ресурсов, можно ли одновременно обновлять сразу несколько элементов LifeForms? Чем можно заменить классический foreach, чтобы перебор происходил в нескольких потоках?
Parallel.ForEach не даёт желаемого эффекта,с ним работает намного медленнее
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
разбираюсь в паттерне MVVM, подскажите, как правильно реализовать связь между коллекциями Model и ViewModelДопустим, в Model у меня есть коллекция, которая...
Столкнулся с такой проблемой: Есть космический корабль, у него есть дочерние объекты - орудия на нужных позицияхНо пули спавнятся не там где...
Есть 2 ViewModel`и AuthViewModel и LoginViewModelВ LoginView есть Frame который контент которого LoginControl а у него контекст AuthViewModel