2012-03-29 8 views
6

mq_send() kullanarak ileti sırasına bir ileti gönderdikten sonra bir yazıcı işleminin birden çok okuyucu işlemi, iletiyi mq_receive() kullanarak okuyabileceği şekilde bir yol var mı. mq'a 1 yazmayı ve mq'dan okunan 1 mesaj bekliyorum, mesaj kayboluyor.Tek gönderici ve linux iletisindeki posix ileti sırasını kullanan birden çok alıcı işlemi

Sadece anladığımın yanlış olup olmadığını bilmek istiyorum. Tek bir yazar ve çoklu okuyucu işlemlerinin posix mesaj sıralarını kullanarak iletişim kurabilmesi için herhangi bir yol var mıdır?

cevap

7

Evet, anlayışınız doğru. Bunu POSIX mesaj sıralarıyla güvenilir bir şekilde yapamazsınız. Aynı mesajı farklı konulara/süreçlere güvenli bir şekilde iletmek isterseniz, her bir okuyucu için farklı bir sıra kullanmalısınız.

SYSV ileti sıralarına geçerseniz bunu yapabilirsiniz. Msgsnd() ve msgrcv(), üzerinde anlaşılan bazı protokollerde iletinin ileti tipi alanını değiştirebilir. Örneğin, yazar süreci mesajın mesaj tipini okuyucu sürecinin PID'sini yapacak; ve okuyucu işlemi sadece bu mesaj tipinin mesajlarını okumayı isteyecektir. Bunun, yazarın her bir okuyucu işlemi için bir mesaj yazmasını gerektirdiğini unutmayın.

İlgili konular