2012-06-26 16 views
6

C Yuva ve tanımlayıcılarımız var, bunlardan birini almanız ve bir İş parçacığına teslim etmeniz mümkün, bu da gelen bağlantıları kabul etmenizi ve Sevdiğiniz bir iş parçacığına çalışın ve iş parçacığı kendi başına yanıtı geri gönderebilir.ZeroMQ: C-benzeri çoklu iş parçacığının nasıl elde edileceği

Sorum şu: ZeroMQ ile bunu nasıl başarabilirim? İstek Yanıtla deseniyle, eşzamansız olarak gönderilip alınamıyor gibi görünüyor, yanıtlar sıralı olmalı, hedefim sırayla değil yanıtları göndererek, tek bir sunucuya birden fazla istemciye sahip olmak olurdu.

İstek Yanıtı desenine bir göz attım, ancak API açıkça bu Soketi birden çok İş Parçacığı ile kullanmanın kötü bir fikir olduğunu belirtiyor. Belki bir şey özledim ya da ZeroMQ bildiğimden daha zeki. Daha fazla bilgiye ihtiyacınız varsa, sadece bir yorum gönderin ve bilgileri vermek için elimden gelenin en iyisini yapacağım. İşte

Code Examples Soket açıklaması:

Ben de verilen örneklerle bir göz vardı ZMQ-Socket

cevap

3

araştırıcı gün sonra zeromq kanalda IRC bir dost kişi benim için yardım sağladı: yani bu tam olarak bunu örnek kod ise, tam olarak bir bağlantı cevap.

Güncelleştirilmiş bir bağlantı, birisinin hala bunu aradığı durumda. Kalıcı olmalı! http://zguide.zeromq.org/

Bu örnek gerçekten iyi çalışıyor, uyum, kolay, ben bir threadpool ile boost konuları kullandık.

+0

Ne yazık ki, bu sayfa mevcut değil. Buraya göndermeye özen göster, bu bir cevap mı? –

+0

Merhaba d -_- b burada waybackmachine için başka bir seçenek var http://web.archive.org/web/20120704201150/http://www.zeromq.org/blog:multithreaded-server –

+0

Güzel okuma. Teşekkürler Oliver. –

2

Ben Sen her gelen bağlantı ve her iş parçacığı için yeni bir iplik yapmak isteyen bir sunucuya ihtiyacınız anlamak gibi http://www.kieser.net/linux/java_server.html

+0

Teşekkür Shahryar, burada talebim gerçekten "SıfırMq" ile bunun nedeni ölçeklenebilirliktir, uygulamayı daha sonra farklı makinelerde görev yapmak için uygulamayı genişletmek istiyorum, zeromq ile "modele göre" kütüphane ile modelimi genişletebilirim farklı bir desen var ve böylece daha yüksek ölçeklenebilirlik var .. –

2

Genellikle, mevcut tasarımları 0MQ'ye uyarlamaya çalıştığınızda sıkıntıya girersiniz. Burada mevcut tasarım, çocuk işlemlerine veya iş parçacığına yuva (genellikle HTTP) geçirir ve sonra yanıt vermelerini sağlar. Çok zarif bir tasarım değil. Her yeni bağlantı bir soket olarak varolduğundan ve bir yanıt gönderildiğinde soketin imha edildiği için çalışır. Bunların hiçbiri 0MQ uygulamaları için geçerli değildir.

0MQ tasarımı, istemcilerden gelen istekleri çeken bir ön uç ROUTER soketi kullanır. Ardından, bu istekleri istekleri çözmek için bir arka taraf DEALER kullanarak inproc: // yuvaları boyunca çalışan iş parçacıklarına geçirir. İşçi iş parçacığı istekleri almak ve yanıtlarını geri göndermek için bir REP soketi kullanır. Ana iş parçacığı daha sonra hem ön ve arka uç soketinde, yalnızca ikisi arasındaki iletileri yönlendirerek yoklar.

o eski blog makale (eski XREP/XREQ isimlerini kullanarak) açıklar ve burada birçok dilde örneklerle daha ayrıntılı olarak açıklanmıştır ne hangisi: çaba için http://zguide.zeromq.org/page:all#Multithreading-with-MQ

İlgili konular