View Full Version : [C/C++] Inviare un messaggio ad un altro processo
considerando che non ho esperienza in merito all'invio di messaggi tra processi vi chiedo lumi.
Volendo inviare dati da un processo chiamato MOTORE ad un processo chiamato SERVITORE in modo abbastanza efficace cioè veloce si usa PostMessage() e GetMessage() oppure altri tipi di funzioni?
grazie 1000
starfred
02-08-2011, 16:54
Ammesso che stiamo parlando di processi e non di thread (che implicherebbe soluzioni più semplici) generalmente ci sono 3 soluzioni per il modello a scambio di messaggi:
comunicazione sincrona
comunicazione asincrona
rendez-vous
Inoltre bisogna definire la tipologia dei canali che possono essere unidirezionali o bidirezionali.
Ammesso che stiamo parlando di processi e non di thread (che implicherebbe soluzioni più semplici) generalmente ci sono 3 soluzioni per il modello a scambio di messaggi:
comunicazione sincrona
comunicazione asincrona
rendez-vous
Inoltre bisogna definire la tipologia dei canali che possono essere unidirezionali o bidirezionali.
sono processi, sto usando un programma che acquisisce byte da un apparato e se trova dei bit cambiati li invia ad un altro processo come messaggio.
starfred
02-08-2011, 18:26
Ok, allora le tecniche di programmazione sono quelle che ti ho elencato. Sono stati scritti decine di libri sulle cose che ti ho detto. Il mio consiglio è quello di cercare qualcosa a riguardo poiché l'argomento è vastissimo.
ok, mi arrangerò da solo, grazie :)
tomminno
02-08-2011, 20:21
Alcune soluzioni più o meno in ordine di complessità architetturale:
shared memory
File
pipe
socket
RPC
webservice
Message Queue
ESB
starfred
02-08-2011, 20:43
shared memory no. Sono processi non thread.
shared memory no. Sono processi non thread.
Che vuol dire ? C'e' modo di usare shared memory anche tra processi (tipicamente mappando in memoria dei file)
considerando che non ho esperienza in merito all'invio di messaggi tra processi vi chiedo lumi.
Volendo inviare dati da un processo chiamato MOTORE ad un processo chiamato SERVITORE in modo abbastanza efficace cioè veloce si usa PostMessage() e GetMessage() oppure altri tipi di funzioni?
grazie 1000
La mia scarsa conoscenza di windows mi dice che PostMessage e GetMessage sono pensati per mandare e ricevere messaggi alle finestre di un programma grafico (ma nessuno che programma sotto windows in 'sto forum ? :D), almeno stando a quanto scritto qua: http://msdn.microsoft.com/en-us/library/ms644944%28v=vs.85%29.aspx
Magari funziona lo stesso, ma concettualmente forse e' piu' vicino a quello che ti serve una named pipe http://msdn.microsoft.com/en-us/library/aa365590%28v=vs.85%29.aspx
anche se francamente a vedere la quantita' di codice necessaria per il produttore e il consumatore (http://msdn.microsoft.com/en-us/library/aa365592(v=vs.85).aspx e http://msdn.microsoft.com/en-us/library/aa365588%28v=vs.85%29.aspx) viene un po' di paura...
In ogni caso qua hai una panoramica delle alternative:
http://msdn.microsoft.com/en-us/library/aa365574(v=VS.85).aspx
La mia scarsa conoscenza di windows mi dice che PostMessage e GetMessage sono pensati per mandare e ricevere messaggi alle finestre di un programma grafico (ma nessuno che programma sotto windows in 'sto forum ? :D), almeno stando a quanto scritto qua: http://msdn.microsoft.com/en-us/library/ms644944%28v=vs.85%29.aspx
Magari funziona lo stesso, ma concettualmente forse e' piu' vicino a quello che ti serve una named pipe http://msdn.microsoft.com/en-us/library/aa365590%28v=vs.85%29.aspx
anche se francamente a vedere la quantita' di codice necessaria per il produttore e il consumatore (http://msdn.microsoft.com/en-us/library/aa365592(v=vs.85).aspx e http://msdn.microsoft.com/en-us/library/aa365588%28v=vs.85%29.aspx) viene un po' di paura...
In ogni caso qua hai una panoramica delle alternative:
http://msdn.microsoft.com/en-us/library/aa365574(v=VS.85).aspx
l'importante è trovare un sistema non troppo complesso e performante
ho optato per le socket ma non so quanto si paga in performance rispetto ai vari modi di inter process communication descritti qui http://msdn.microsoft.com/en-us/library/aa365574%28v=VS.85%29.aspx#base.using_com_for_ipc
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.