Возможная утечка памяти в ConcurrentBag?

Я ' я читал о новых параллельных коллекциях, и особенно ConcurrentBag привлек мое внимание. Поскольку ConcurrentBag внутренне хранит локальный набор для каждого отдельного потока, используя его для отслеживания элементов, это означает, что, когда сам поток выходит за пределы области видимости, ConcurrentBag по-прежнему будет ссылаться на него в памяти. Это, в свою очередь, означает, что поток использует как память, так и собственные ресурсы? (извините за то, что я не знаю точной внутренней работы объекта потока .NET)

Я могу предположить вариант использования, в котором у вас есть 1 глобальный ConcurrentBack для многопоточного веб-сервиса, когда у вас есть много клиентов, добавляющих задачи. Эти задачи добавляются потоками в пуле потоков. Теперь пул потоков - очень эффективный способ управления потоками, но он удаляет и создает потоки в зависимости от объема работы. Следовательно,

map("world", fill=TRUE, col="white", bg="gray", ylim=c(-60, 90), mar=c(0,0,0,0))

Но мне нужно отобразить карту Тихого океана по центру. Я использую карту ("world2", и т. Д., Чтобы использовать базовую карту с центром в Тихом океане из пакета карт, и конвертирую координаты точек данных в моем фрейме данных ( df ) с помощью:

df$longitude[df$longitude < 0] = df$longitude[df$longitude < 0] + 360

Это работает, если я не использую опцию fill , но с fill полигоны, пересекающие 0 °, вызывают проблемы.

Map of the world, 0° to 360° longitude

Думаю, мне нужно преобразовать данные полигонов из библиотека отображает каким-то образом, чтобы разобраться в этом, но я не знаю, как это сделать.

Моим идеальным решением было бы нарисовать карты с левой границей на -20 ° и правой границей при -30 ° (т. е. 330 °). Следующее показывает правильные точки и береговые линии на карте, но проблема пересечения нуля остается той же

df$longitude[df$longitude < -20] = df$longitude[d$longitude < -20] + 360
map("world", fill=TRUE, col="white", bg="gray", mar=c(0,0,0,0),
  ylim=c(-60, 90), xlim=c(-20, 330))
map("world2", add=TRUE, col="white", bg="gray", fill=TRUE, xlim=c(180, 330))

Любая помощь будет принята с благодарностью.

18
задан Michael Dunn 18 March 2011 в 14:10
поделиться