2017-09-21 7 views
0

Mehrere Benutzer-Space-Prozesse können auf diesen Wert zur gleichen Zeit zugreifen, also denke ich, wir sollten einige Sperren oder Speicherbarriere Dinge für die Sicherheit verwenden, aber ich könnte ziemlich viel Code in Linux-Treiber finden, wer nicht, oder nur den Schreibfall zu schützen . Brauchen wir wirklich einen Mutex für beide Schreib- und Schreibfälle?Benötige ich einen Mutex, um einen int-Wert zu schützen, der über sysfs abgerufen/gesetzt werden kann?

+0

Sie verwenden shm? (Shared Memory Segment) – rak007

+0

Nicht wirklich. Mein Fall ist zum Beispiel, ich habe ein rw Register "REG", und im Treiber habe ich seinen Wert mit "int reg" zwischengespeichert, dann erstelle ich eine sysfs Datei, sagen wir, "/sys/.../reg". Wenn der Benutzer einen int-Wert an "/sys/.../reg" abgibt, wird dieser Wert in REG geschrieben und in "int reg" zwischengespeichert; Wenn der Benutzer cat "/sys/.../reg" verwendet, gibt der Treiber dem Benutzer einfach "int reg". Meine Frage ist, muss ich einen Mutex hinzufügen, um "int reg" für beide Echo und Cat Case zu schützen? –

+0

Wenn Sie in Dateien mit mehreren Prozessen/Threads schreiben, könnte Ihnen dieser Beitrag vielleicht helfen: https://stackoverflow.com/questions/26565498/multiple-threads-writing-on-same-file – rak007

Antwort

0

Es hängt von der CPU und dem System ab, dass der Code ausgeführt wird. Tatsächlich können Sie dies ohne Synchronisationstechniken tun, wenn die Operation atomic ist. Solange Sie sich nicht sicher sind, ist es besser, ein Synchronisationsobjekt zu verwenden. Für int/dword-Werte tun die meisten Leute das ohne sych-Objekt.

Lesen Sie diesen Artikel http://preshing.com/20130618/atomic-vs-non-atomic-operations/

und auch ein gleiches Problem Are C++ Reads and Writes of an int Atomic?

+0

Danke für deine Erklärung und deine Links :-) –

Verwandte Themen