Çalışmaları/engelleme işlemlerinde bulunan birkaç işçiye TBB görevleri arasında çalışmak (void*
) için hızlı bir iş parçacığı iletişim mekanizmasına ihtiyacım var. Şu anda pipe()
+ libevent
kullanıyorum. Intel Threading Building Blocks ile daha hızlı ve daha şık bir alternatif var mı?Hızlı iş parçacığı iletişim mekanizması
cevap
İş parçacıkları aynı bellek alanını paylaştığından, standart belleği mutex kilitleriyle kullanabilmeniz gerekir. Pipe() + libevent çözümü, her işlemin farklı bir bellek alanına sahip olduğu süreçler arası iletişim için daha uygun görünmektedir.
Cevabınız için teşekkür ederiz. Bunun için concurrent_bounded_queue kullanacağım sanırım :) – Stan
Implementing a Thread-Safe Queue using Condition Variables. Birimler arası iletişimi kolaylaştırmak için bir STL sırası, bir muteks ve bir koşul değişkenini kullanır. (Bunun Intel Threading Building Blocks'a uygulanıp uygulanmadığını bilmiyorum, fakat TBB soru/başlıkta belirtilmediğinden, sanki diğerleri benim yaptığım gibi burada olacak gibi düşünürüm. IPC değil. Ve bu makale bana yardım ettiği gibi yardımcı olabilir.)
Boost kilidine ve iş parçacığı güvenli kuyruğuna bir göz atın. Kullanımı çok kolay ve gerçekten iyi çalışıyor. İş için kuyruğu yoklamada ayrı çekirdekler üzerinde çalışan iplerle kullandım.
- 1. İş parçacığı, iki iş parçacığı arasındaki iletişim C#
- 2. iş parçacığı içinde yerel depolama iş parçacığı
- 3. İş parçacığı tanıtıcısı iş parçacığı tanıtıcısı
- 4. D-Bus iş parçacığı modeli
- 5. iş parçacığı
- 6. Hatalı iş parçacığı
- 7. İş paylaşımı mekanizması (OpenMP'de) iş parçacıkları yürütülürken iş parçacıkları arasındaki işlemleri iletiyor mu?
- 8. NSThread sleepfortimeinterval ana iş parçacığı
- 9. İş parçacığı güvenliği için NSMutableArray eşitleme?
- 10. CountdownTimer UI iş parçacığı güncelleştiren çalışan iş parçacığı içinde
- 11. UI iş parçacığı üzerinde görev sürdürme, arka plan iş parçacığı
- 12. Bir iş parçacığı veya iş parçacığı için bir DAO DAO?
- 13. Windows iş parçacığı havuzu ve CLR iş parçacığı havuzu
- 14. Qt: Arka plan iş parçacığı yenileme UI iş parçacığı
- 15. Django/sqlite3 "OperationalError: iş parçacığı yok" iş parçacığı üzerinde
- 16. Tomcat iş parçacığı havuzundaki iş parçacığı sayısı nasıl artırılır?
- 17. Kinect ile iş parçacığı
- 18. Posix iş parçacığı öğretici
- 19. Python iş parçacığı dökümü
- 20. İş parçacığı durduruluyor
- 21. gdb - iş parçacığı günlüğü
- 22. UI'dan ayrı iş parçacığı
- 23. WPF iş parçacığı C#
- 24. iş parçacığı afinitesi
- 25. İş parçacığı güvenli Queue
- 26. Bir "gerçek" iş parçacığı
- 27. Maksimum iş parçacığı sorunu
- 28. Ayrı iş parçacığı içinde
- 29. notifyAll iş parçacığı uyanıyor.
- 30. 'sys.excepthook' ve iş parçacığı
Genel değişkenler? – kennytm