Newsgroup: it.comp.programmare.win32
Titolo: Condivisione dati tra software

Poichè sto realizzando due applicazioni che devono interagire tra di loro com'è
possibile scambiare dati tra due o più programmi utilizzando la memoria ram
piuttosto che quella su disco?
E' possibile bloccare una parte della memoria per caricarci dei dati a cui
diverse applicazioni possono accedere?
Grazie a chiunque saprà rispondermi 
-- 
Posted from 
ct1-949.dialup.tiscalinet.it
 [62.10.156.181] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 diverse applicazioni possono accedere?
potresti usare un Memory Mapped file

 utilizzando la memoria ram piuttosto che quella su disco?
LPC

 LPC
Di cosa si tratta? E' una nuova tecnica IPC? La mia guida sul Win32 non
visualizza nulla
--
- Carlo -
c.b...@libero.it
http://members.fortunecity.it/cbertu

non visualizza nulla
Local Procedure Call. L'ho menzionata giusto per sfizio mio personale. 
Non lo trovi sulle guide Win32 perchè non è Win32, è parte dell'API 
nativa (cioè del kernel) di NT. E' il meccanismo di IPC message-based 
più veloce disponibile su Windows (beh, no, il più veloce sono le event 
pair, ma sincronizzano al massimo due processi alla volta)
Come semantica è praticamente identico alle named pipe (inclusa 
l'utilissima funzione per l'impersonazione del client attualmente 
connesso, e più in generale la perfetta integrazione nel modello di 
sicurezza di NT), quindi un vicinissimo parente delle socket, ma le 
named pipe sono un file system, con tutte le limitazioni che ne 
conseguono (la peggiore, dopo il fatto che è necessario copiare i buffer 
da user a kernel e viceversa per ogni transazione, è che come tutti i 
driver di periferica sono sommerse da numerosi strati di interfaccia), 
mentre LPC comunica i dati o tramite un buffer di dimensioni fisse (mi 
pare 260 byte e qualcosa), oppure (meglio) con una sezione di memoria 
condivisa di dimensioni arbitrarie. Quindi il context switch necessario 
per trasferire l'esecuzione dal client al server o viceversa è ancora 
più veloce: non solo non devi copiare tutto il buffer due volte, ma 
addirittura ce l'hai già pronto in memoria e non occorre salvarlo nel 
file di paging e recuperarlo
Per cosa viene utilizzata, ti chiederai? In Windows NT è il meccanismo 
più usato per la comunicazione tra processi e relativi sottosistemi 
(questi ultimi sono dei processi-server non interattivi che forniscono 
determinati servizi ai processi dell'utente - si tratta di un concetto 
preso a prestito dalle architetture microkernel), e per la comunicazione 
dei sottosistemi tra di loro e con il kernel. Vengono anche usate per 
implementare RPC quando i due programmi intercomunicanti si trovano 
sulla stessa macchina, per evitare l'overhead di tecniche "universali" 
ma molto poco scalabili, come i socket
In pratica se non ti servono certe caratteristiche delle named pipe, 
come il fatto che sono un file system, quindi le singole pipe sono 
accessibili tramite le normali funzioni di lettura file, e che 
funzionano in remoto grazie a NetBIOS, puoi usare LPC per risultati 
equivalenti ma performance maggiore

 visualizza nulla
Difatti LPC e' uno dei tanti aspetti "undocumented" di Windows.
http://www.windowsitlibrary.com/Content/356/08/toc.html
Se vuoi approfondire.
-- 
Posted from  [80.105.34.80] 
