Premesso che ho realizzato un software del genere (con molti processi relativi a codice C/C++ che acquisivano dati ad alta velocità e un programma in C#, altro processo, che li gestiva tramite memoria condivisa), le cose non sono semplicissime, anzi.
Ho molte perplessità :1) perche la memoria condivisa e non i socket
due processi si scambiano grandi quantità di dati e la lettura devono essere molto veloci, e parliamo di software in contesti dove la sicurezza è un requisito ad alta priorità, gestione di un impianto industriale in real time.
a) Windows (e le relative applicazioni) non è un sistema operativo "real time" e i tempi di elaborazione non sono deterministici. E' comunque un sistema soggetto a ritardi imprevedibili che possono pregiudicare certi tipi di lavoro;
b) in ogni caso il sistema è esposto a malfunzionamenti di qualsiasi genere (non ultimi, crash del sistema operativo) e quindi non è affatto adatto in un ambiente industriale critico (dovresti usare sistemi appositamente progettati e dedicati al mondo industriale)
c) per lo scambio di dati in memoria condivisa tra due processi, devi implementare un sistema "robusto" di sincronizzazione, in modo che il processo "consumatore" non legga dati che non sono ancora stati scritti totalmente o che non riesca a "star dietro" al produttore. Dovrai quindi avere a che fare con mutex, semafori e affini.
Dipende dalla velocità di acquisizione dei dati e dalla loro quantità.immagina questo un processo legge dei dati da alcuni sensori che regolano il funzionamento di un macchinario, e li devi inviare ad una macchina che supervisiona il lavoro,
Nel software di cui ti parlavo e che ho scritto per delle misurazioni industriali, l'acquisizione era molto veloce.
Due form o due processi?ma se io "volessi"
separare lettore e scrittore su due form diverse??
E' differente ...
In ogni caso, cosa hai scritto ? Hai già del codice che non funziona ?