2011-01-25 19 views
6

Bazı hızlı, iş parçacığı güvenli bellek havuzu kitaplığına ihtiyacım var. Çok fazla uğraştım, ancak hızlı çözümler iplik güvenliğini korurken, diğerleri gerçekten büyük.C: bellek havuzu kitaplığı?

Herhangi bir öneriniz var mı?

+0

Neden sadece malloc()? Çok mu yavaş? İş parçacığı havuzunu denedin mi? Daha hızlı, ama biraz hafıza harcıyor. –

+0

Küçük parçalar (<500b) ile saniyede malloc/free hundrends var, yani evet, sadece ücretsiz/malloc gerçekten yavaş. Ben de iş parçacığı havuzu yönetimi hakkında baş ağrısı olmayacak bazı iplik güvenli çözüm almak istiyorum. – Daniel

+0

Ayrıca arena bellek yönetimi düşünün. Eğer sizin için uygunsa çok daha hızlı olacaktır. – Joshua

cevap

7

Hem nedmalloc ve ptmalloc bakınız Doug LEA malloc (en Linux ayırıcılarına çekirdek) çevresinde göre Cı göre iplik önbelleğe alma bellek yöneticileri vardır. Hem ticari kullanım için ödeme gerektiren, hem de son baktığım gibi, iyi bir lisans altındalar. Googles tcmalloc ayrıca C bindings iirc'e sahiptir ve bir yığın önbelleğe alma ayırıcısı olarak temelden inşa edilmiştir, ayrıca bazılarında yığın ve cpu profil oluşturma araçlarında yerleşik olarak bulunur, ancak büyük bellek kullanımı için oluşturulur (örnek verdikleri örnek başına 300 mb'dir), ve bu kadar çok küçük ölçekli uygulamalar için beklendiği gibi işe yaramıyor

+0

teşekkür ederim! nedmalloc tam olarak aradığım şey. – Daniel

0

iyi çalışıyor ve bu kadar büyük olmamalı.

+0

Ben ilk yaklaşım olarak apr denedim ve gerçekten büyük + kullanacağım çok fazla api var. – Daniel

2

Her iş parçacığı için bir bellek havuzu kullanmanız gerekir.

+2

Not: Bu yardımcı olsa da, dikkat edilmesi gereken bir çok konu da vardır - belirli bir iş parçacığından belirli bir havuza yönlendirilebildiğinden emin olabilirsiniz, ancak herhangi bir havuzdan herhangi bir bloğu serbest bırakmak için hazırlıklı olmanız gerekir. iplik. –

+0

Neden her iş parçacığı için ayrı bellek havuzları kullanmalıyım? – Daniel

+0

Bu, aynı zamanda, serbest mağazasında yüzlerce mega hafızayı ayırabilen bir arenaya da yol açabilir, bu da aslında – Necrolis

0

Hoard'u denediniz mi?

ayrıca twoarticles Intel.com

den
+0

Gördüğünüz gibi, mevcut uygulama üzerinde civatalama (LD_PRELOAD) gibi bir hack gibi görünmekle birlikte, havuz üzerinde bazı kontrol (boyut, maksimum boyut, mevcut kullanım, vb ... – Daniel