Certo cerchero di essere un po piu esplicativo cercando di rispondere a tutte le domande del caso:

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.

2) Software che si vuole sviluppare.

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, come nell'articolo che vi ho postato dove è molto spiegato bene,ora come i dati dei sensori sono elaborati non è un problema, e neanche coma la macchina legge e interpreta i dati ,(leviamo un po di problematiche a monte al fine di semplificare il discorso)

diciamo questo ho due processi fondamentalmente:

io creo una windows form con un txtbox e un pulsante, l'utente immette una stringa nel txtbox e quando premo il pulsante "vorrei" richiamare il mio applicativo in c# a cui passo questa stringa, che,inizializza una zona di memoria sulla RAM la riserva,con privilegi di lettura e scrittura, e scrive questa stringa.


un'altra form che parte da un secondo programma , ha sempre una txtbox e ed un pulsante ,che invece legge,alla pressione del pulsante "vorrei" che viene richiamato un applicativo in c# che, riesce ad accedere alla stessa zona di memoria,legge la stringa e la visualizza nella txtbox.

spero di essere stato piu chiaro,seguendo il link dell'articolo si capisce cosa voglio fare,ora,quello che ho postato ha una limitazione lettore e scrittore sono nello stesso programma,percui non si creano problemi,perchè "mi sembra" che il processo sia lo stesso,di fatti ho ricopiato il codice e testato ed in effetti funziona, ma se io "volessi"
separare lettore e scrittore su due form diverse??

sperando di essere stato un pò più chiaro ti ringrazio in anticpo.