2010-06-10 31 views
11

IPC yapmak için taşınabilir bir C++ kitaplığına ihtiyacım var. Şimdiye kadar çatal() ve SysV paylaşımlı bellek kullandım ama bu beni Linux/Unix ile sınırlandırıyor. Taşınabilir bir çözüm (Windows ve Mac OS X dahil) sunan 3 büyük C++ kütüphanesi olduğunu öğrendim. Boost'u çok seviyorum ve kullanmak istiyorum ama süreçlere ihtiyacım var gibi görünüyor ve şu ana kadar bu sadece deneysel bir dal! Daha önce ACE veya POCO'yu hiç duymadım ve böylece takılıyorum ki hangisini seçeceğimi bilmiyorum. Çatal() ihtiyacım var, uyku() (usleep() harika olurdu) ve tabiki paylaşımlı bellek. Performans ve dokümantasyon da önemli kriterlerdir.IPC için taşınabilir C++ kütüphanesi (işlemler ve paylaşılan bellek), Boost vs PoE vs ACE?

sayesinde sizin Yardımı!

cevap

7

Boost ınterprocess (3 yıl önce bellek hizmet veriyorsa gibi bir şey olmalı) Boost 1.35 yana civarında olmuştur.

ACE daha uzun süredir devam ediyor, ancak bazı şeylerin sesinden dolayı muhtemelen aşırı sıkışık - ACE bir büyük kitaplıktır ve yalnızca içerdiği küçük bir şey gibi görünüyor. Bu mutlaka büyük bir sorun değil, akılda tutulması gereken bir şey. Özellikle, büyük projeler için gerçekten tasarlanan bir kütüphane, küçük olanlar için biraz beceriksiz görünebilir. ACE, IPC'nin de dahil olduğu, öncelikle ağ geliştirmeye yöneliktir, çünkü (örneğin) bir dizi işbirliği sürecinin dışında tek bir sunucu gibi görünmek isteyebilirsiniz ve eğer öyleyse bu işbirliği süreçlerini oluşturmanın bir yoluna ihtiyacınız vardır. .

POCO çok daha fazla ACE gibi - temelde bazı IPC yeteneği dahil olur bir ağ kütüphanedir. Yine, çok daha büyük, daha iddialı bir kütüphanenin oldukça küçük bir bölümünü kullanıyorsunuz.

İstediğinize dayanarak, muhtemelen Boost'u kullanayım - istediğinizi söyleyebilmeniz için en uygun olana benziyor. POCO muhtemelen ikinci seçeneğim olurdu. Boost'tan ayrı olmakla birlikte, benzer tasarım felsefesini büyük ölçüde takip ediyor gibi görünüyor - özellikle de, ACE'nin her şeyi kapsayan bir yapıya sahip olduğu standart kütüphaneyle bütünleşmesi gerekiyordu.

+0

"şeyi kapsayan tüm" kibarca koyuyor. –

+1

Teşekkür ederim, sonra Boost'u kullanacağım. – Linoliumz

+0

walki: Henüz Boost'da olmayan Boost.Process sınıfını kullanacağını mu söylüyorsun? Hala inkübatörde, ama zaten iyi olabilir. Deneyiminiz nedir? – Pietro

1

Ben Apache portable runtime eklemek ister. Gerçekten C++ değil ama elbette bunu kullanabilirsin. Başlıklar bile "extern" C "" içerir. Dahil

geçerli:

  • Paylaşılan Bellek
  • Ağ bağlantıları
  • Sinyaller
  • muteksler
  • birçok şey.

Yükseltme ile ilgili sorun, C++ derleyicisi için güçlü gereksinimlere sahip olmasıdır. Özellikle çapraz derleyiciler, örn. güçlü şablon kullanımı, böylece düz bir C kütüphanesi "daha taşınabilir" dir.

+0

Herkes için konuşamıyorum, ancak kişisel olarak, Visual Studio'yu geliştirmek için APR'yi alma konusunda daha fazla sorun yaşadım. –

+0

bana APR inşa beri Visual Studio 2010 yükseltme yapıyoruz rağmen, bir süre oldu WIN32 – schoetbi

+0

tanımlamak için, bu yüzden yine yapıyor olacağım için numaraydı.Önceden yapılandırılmış bir config.h dosyası almak ve muhtemelen bir veya iki şey daha yapmak gerekiyor Visual C++ 6 proje dosyalarını yükseltmek hatırlıyorum gibi görünüyor. –

İlgili konular