2010-02-28 22 views

cevap

2

Sırasıyla yürütülmesi gereken bir dizi komutum vardı, ancak ana program akışı tamamlanmalarına bağlı olmadığından, bunları sıraya alıp ayrı bir şekilde yürütülecek bir System V ileti kuyruğu aracılığıyla başka bir işleme aktardım. ana programın İleti sıraları eşzamansız bir iletişim protokolü sağladığından, bu görev için iyi bir uyum sağladı.

Dürüst olmak gerekirse, daha önce hiç kullanmadığım ve istediğim için Sistem V ileti kuyrukları kullandım. Eminim kullanabileceğim başka IPC yöntemleri vardır. Ben herhangi bir gerçek VxWorks programlama yaptık beri


Bir süre oldu, ama aynı zamanda VxWorks uygulamalarında kullanılan mesaj kuyrukları bulabilirsiniz. VxWorks Application Programmer's Guide'a (Google arama) göre, tek bir CPU içindeki birincil intertask iletişim mekanizması mesaj kuyrukları 'dur. VxWorks, iki mesaj kuyruğu altprogram kitaplığı (POSIX ve VxWorks) kullanır.

1

Bir keresinde, kullanıcı arabirimini ve gerçek G/Ç işini yapmak için bir dizi çalışan iş parçacığını güncelleştiren bir iş parçacığı olan bir metin modu G/Ç üreteci yardımcı programını yazdım. Bir çalışan iş parçacığı bir G/Ç işlemini tamamladığında, kullanıcı arabirimine bir güncelleştirme iletisi gönderilir. Bu ileti sistemini bir POSIX ileti kuyruğu kullanarak uyguladım.

Neden böyle uygularsınız? O zamanlar iyi bir fikir gibi geldi ve nasıl çalıştığını merak ettim. Sorunu çözebileceğimi ve aynı zamanda bir şeyler öğrenebileceğimi düşündüm. Kullanabileceğim pek çok farklı teknik vardı ve bu tekniği tercih etmemde herhangi bir sebep görmedim. Daha sonraya kadar fark etmedim, ama bir başka sisteme yardımcı olmak zorunda kaldığımda POSIX kuyruğu kullandığına sevindim (aynı zamanda POSIX uyumluydu, bu yüzden dış kütüphaneleri almak için endişelenmedim) uygulamayı çalıştırmak için).

1

IPC için bir IPC mekanizması olduğundan emin olabilirsiniz. Bu mekanizma ile, tüm uygulamaların kuyrukta kullandığı ve her birinin özel bir mesaj türünü beklediği (özel bir olayın gerçekleşeceği) çok işlemli olay işleme uygulamaları yazabilirsiniz. İleti bu iletiye ulaştığında, bu iletiyi alır, işlemi işler ve sonucu, diğer işlemin kullanabilmesi için sıraya geri koyar.
Bir kez ileti kuyruklarını kullanarak böyle bir uygulama yazdım. Çalışmak oldukça kolaydır ve semaforlar gibi İntersiyonel senkronizasyon mekanizmalarına ihtiyaç duymaz. Bellek Eşlenen dosyalarının Paylaşılan Belleği yerine de kullanabilirsiniz; ihtiyacınız olan tüm durumlarda diğer işlemlere bir yapı veya bir çeşit paketlenmiş veri göndermek için Message Queues'ın diğer IPC mekanizmalarından çok daha kolaydır.
This book, Linux'taki Message Queues ve diğer IPC mekanizmaları hakkında bilmeniz gereken tüm bilgileri içerir.

+0

Neden birinin soket yerine bu çirkin eski şeyleri isteyeceğini açıklamış değilsiniz. – tchrist

+0

Aslında ileti sıraları, birbirinden birçok uygulamayı ayırmanıza ve farklı bileşenlerin birbirinden ayrılmasına izin veren bir Message Broker mimarisi oluşturmanıza olanak tanır; ve RPC benzeri bir mekanizma uygulamanıza izin verir, soketler böyle bir mimariyi uygulamak için bir nakliye mekanizması olarak kullanılabilir, ancak bunun için daha yüksek bir seviye protokolüne ihtiyacınız olacaktır. Message Queues hakkında daha fazla bilgi için http://www.zeromq.org adresine bakın. – gst