Ich versuche, einen gemeinsamen Speicher zu erstellen, der von mehreren Prozessen verwendet wird. Diese Prozesse kommunizieren miteinander unter Verwendung von MPI
Aufrufen (MPI_Send
, MPI_Recv
).Benannt Semaphor oder Flock, die besser ist C linux
Ich brauche einen Mechanismus, um den Zugriff auf diesen gemeinsamen Speicher zu steuern Ich habe gestern eine Frage hinzugefügt, um zu sehen, ob MPI irgendeine Möglichkeit bietet, das zu tun. Shared memory access control mechanism for processes created by MPI, aber es scheint, dass es keine solche Bestimmung von MPI gibt.
Also muss ich zwischen named semaphore
oder flock
wählen.
Für benannte Semaphore, wenn einer der Prozesse abrupt stirbt, ohne sem_cloe()
aufzurufen, dann bleibt dieser Semaphor immer und kann von ll /dev/shm/
gesehen werden. Dies führt manchmal zu einem Deadlock (wenn ich denselben Code noch einmal ausfühle!). Aus diesem Grund denke ich momentan daran, flock zu verwenden.
Sie wollten nur bestätigen, ob flock
für diese Art von Operation am besten geeignet ist?
Gibt es Nachteile bei der Verwendung von flock
?
Gibt es noch etwas anderes außer named semaphore
und flock
, die hier verwendet werden können?
Ich arbeite an C unter Linux.
+1, aber ich möchte nur hinzufügen, dass 'Flock' und ähnliche Mechanismen sicherlich keine gute Wahl sind. Sie sollen die gleichzeitige Verwendung von Dateien und nichts anderes schützen. Insbesondere, wenn nichts anderes in der Datei passiert, wird es nicht angegeben, wenn Dateimetadaten (wie Sperren) für andere Prozesse sichtbar sind. Benutze das nicht für einen Zweck, für den es nicht entwickelt wurde. –