2010-11-10 10 views
8

Hızlı bir sorum var. Birden çok sensörden veri almak için küçük bir çok iş parçacıklı program oluşturmam gerekiyordu ve hem pthreads hem de qthreads hakkında bilgi sahibi oldum. Her iki kütüphaneye de erişimim var. Şahsen ben tasarımı ve çeşitli işlevleri nedeniyle Qt kullanmaya yönelik önyargılıyım. Fakat diğerini kullanmanın önemli bir avantajı var mı? TeşekkürQThreads Vs Pthreads

cevap

8

QThreads pthreads üzerine inşa edilmiştir. Nesneye göre çalışmayı kolaylaştırmak için Nesne Tabanlı bir soyutlama sağlarlar. QThreads'ın yanı sıra portatif olanlar, alttaki iplik sistemini kullanarak herhangi bir sistem üzerinde çalışabilirler, pthreads ise POSIX sistemlerine özgüdür.

qthreads kullanmanın neredeyse tek dezavantajı Qt karşı uygulama bağlamanız gerekir ki; Bu bağımlılık, uygulamanızı dağıtmayı biraz daha zorlaştırabilir.

+0

Ya .. Sadece ona bakıyordum ve nasıl yapıldığı gibi içeriden görünüyor. Teşekkürler peoro. Ben özellikle tryLock() pthread_mutex_trylock kullanarak uygulanmış olup olmadığını arıyordum. Bence öyle. – blueskin

+2

tek dağıtım sorunu, qt kitaplıklarına dinamik olarak bağlandığınızda LGPL lisansınızı kodunuzla birlikte eklemeniz gerektiğidir (bu, açık kaynaklı ve ticari olmayan kaynak sürümünü kullandığınızı varsayar). Pencerelerde, dağıtmak için hangi DLL'lere ihtiyacınız olduğuna emin değilseniz, 'depends.exe'yi kullanın ve tam olarak size söyleyecektir! http://www.dependencywalker.com/ – g19fanatic

2

Ben şeylerin özünde düşünüyorum linux altında QThreadpthread kullanır. Pencerenin kapağının altında ne olduğundan emin değilim. İhtiyacınız olan bazı pthread API işlevleri olmadıkça, QThread ile birlikte kullanılamaz, sadece size sağlayacağı taşınabilirlikten faydalanmak için QThread ile yapışırdım. Orada önemli bir performans farkı olmasını beklemezdim. Qthread ayrıca sinyal/slot mekanizmasını iplik sınırlarında kullanmanıza izin verecektir.

4

Ama qthreads vinç yönetim bunun için olay döngü kullanmak bilmek var, yani sadece pthread olduğu gibi iplik öldüremem. İş parçacığı uzun ve sıkı çalışırsa, serbest bırakılmasa da durdurmak mümkün olmaz. Bazı durumlarda önemli.