2016-10-17 4 views
0

Ich habe 2 Programme (Prozesse). Ein Prozess schreibt in den gemeinsamen Speicher, während der andere ihn liest. Also, mein Ansatz war wie folgt: Anfänglich ist der Wert des gemeinsamen Speichers 0. Also schreibt der Prozess 1 nur, wenn der Wert 0 ist. Jetzt hat der Prozess 1 einen anderen Wert für shm geschrieben und "wartet", bis der Wert 0 wird liest das shm und schreibt 0 hinein. Warte, ich meine in while (1) Schleife.Ein Prozess schreiben, während der andere den gemeinsamen Speicher liest

Meine Frage ist, ob dieser Ansatz gut oder kann ich mit einem anderen Ansatz in Bezug auf CPU-Auslastung und Speicherauslastung besser machen?

+0

Wir brauchen vielleicht mehr über den Zweck kennen, aber ich würde auf 'Unix sockets' zu lesen, vorschlagen und' Nachricht queues'. Beide sind unter Prozesskommunikation (IPC) Mechanismen, wie Shared Memory –

+0

Ein 'while (1)' endet nie –

+0

Ich breche davon ab, wenn Bedingung erfüllt – Harsha

Antwort

1

Erwähnte Problem bekannt als Prozess Synchronisation Problem und gegeben Logik ist nichts anderes als Busy Waiting Ansatz des Problems, die sehr primäre Lösung ist.

Producer-Consumer Problem lesen, die dem gegebenen Problem ähnlich ist.

Es gibt einige bessere Lösungen zu diesem als Busy Waiting wie:

Spinlock, Semaphore usw.

Sie können Grundkenntnisse über all dies erhalten von here

Hoffe, dass es helfen wird !!

0

Ich denke, das ist in Ordnung, aber das Problem tritt auf, wenn beide den Prozess in einen gemeinsamen Speicherblock schreiben. Zu diesem Zeitpunkt könnten Sie einen Semaphor verwenden, um die beiden Prozesse zu synchronisieren, so dass nacheinander auf freigegebene Ressourcen/Speicherblöcke geschrieben werden kann. können Sie finden Semaphore Klicken Sie in Bezug auf [hier] (https://en.wikipedia.org/wiki/Semaphore_(programming)

Verwandte Themen