Продолжая обсуждение с Понимание результатов параллельного профилирования VS2010 C#, но ближе к делу:
У меня есть много потоков, которые работают параллельно (используя Parallel.For/Each), которые используют много выделений памяти для небольших классов.
Это создает конкуренцию в глобальном потоке распределителя памяти.
Есть ли способ указать .NET предварительно выделить пул памяти для каждого потока и выполнить все выделения из этого пула?
В настоящее время моим решением является моя собственная реализация пулов памяти (глобально выделенные массивы объектов типа T, которые перерабатываются между потоками), что очень помогает, но неэффективно, потому что:
- Я не могу указать .NET выделить из определенного фрагмента памяти.
- Мне по-прежнему нужно много раз вызывать new, чтобы выделить память для пулов.
Спасибо,
Аггей