Ho giocato con code di messaggi (System V, ma anche POSIX va bene) in Linux di recente e sembrano perfetti per la mia applicazione, ma dopo aver letto The Art of Unix Programming non sono sicuro che siano davvero un bella scelta.Le code dei messaggi sono obsolete in linux?
http://www.faqs.org/docs/artu/ch07s02.html#id2922148
La parte superiore, passaggio di messaggi strato di System V IPC ha ampiamente caduti in disuso. Il livello inferiore, costituito da memoria condivisa e semafori, presenta ancora applicazioni significative in circostanze in cui è necessario eseguire il blocco dell'esclusione reciproca e una condivisione di dati globali tra processi in esecuzione sulla stessa macchina. Queste strutture di memoria condivisa System V si sono evolute nell'API di memoria condivisa POSIX, supportate da Linux, BSD, MacOS X e Windows, ma non da MacOS classico.
http://www.faqs.org/docs/artu/ch07s03.html#id2923376
Le strutture System V IPC sono presenti in Linux e altri Unix moderni. Tuttavia, poiché sono una funzione legacy, non vengono esercitati molto spesso. La versione Linux è ancora nota per avere bug a partire dalla metà del 2003. A nessuno sembra importare abbastanza per risolverli.
Le code di messaggi System V sono ancora buggate nelle versioni Linux più recenti? Non sono sicuro che l'autore significhi che le code dei messaggi POSIX dovrebbero essere ok?
Sembra che i socket siano l'IPC preferito per quasi tutto (?), Ma non riesco a vedere come sarebbe molto semplice implementare code di messaggi con socket o altro. O sto pensando in modo troppo complesso?
Non so se è rilevante il fatto che sto lavorando con Linux incorporato?
7 anni dopo .. speriamo che non sia troppo per essere ancora abbastanza rilevante: mi chiedo le impostazioni predefinite delle code di messaggi su 'Ubuntu 14.04',' linux 3.13', ovvero 'cat/proc/sys/fs/mqueue/msg_max' elenca 10 (messaggi in una coda) e'/proc/sys/fs/mqueue/msgsize_max' è 8192 (byte) - sono stranamente piccoli. C'è qualche ragione rigida per queste impostazioni predefinite o sono solo vecchie? (L'uomo mq_overview' dice che hard limit su msg_max è circa 32768, che è piuttosto alto.) Non intendo creare una coda infinita simile a stream, ma è 100-1000 in 'msg_max' ok? – xealits