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