Sto provando a creare una memoria condivisa che verrà utilizzata da più processi. questi processi comunicano tra loro utilizzando le chiamate MPI
(MPI_Send
, MPI_Recv
).Nome semaforo o gruppo che è migliore C linux
Ho bisogno di un meccanismo per controllare l'accesso di questa memoria condivisa Ho aggiunto una domanda ieri per vedere se MPI fornisce qualsiasi possibilità per farlo. Shared memory access control mechanism for processes created by MPI, ma sembra che non ci sia una simile disposizione da parte di MPI.
Quindi devo scegliere tra named semaphore
o flock
.
Per il semaforo denominato se uno dei processi muore improvvisamente senza chiamare sem_cloe()
, di quel semaforo rimane sempre e può essere visto da ll /dev/shm/
. Ciò si traduce talvolta in deadlock (se eseguo di nuovo lo stesso codice!), Per questo motivo attualmente sto pensando di utilizzare il flock.
Volevo solo verificare se flock
è più adatto per questo tipo di operazione?
Ci sono degli svantaggi nell'uso di flock
?
C'è qualcos'altro oltre a named semaphore
e flock
che può essere utilizzato qui?
Sto lavorando su C sotto linux.
+1, ma vorrei solo aggiungere che 'gregge' e meccanismi simili non sono certamente una buona scelta. Sono progettati per proteggere l'uso simultaneo di file e per nient'altro. In particolare, se non accade nulla sul file, non viene specificato quando i metadati del file (come i blocchi) sono visibili per altri processi. Basta non usare questo per uno scopo per il quale non è stato progettato. –