2017-09-21 64 views
0

多用戶空間進程可以同時訪問這個值,所以我想我們應該使用一些鎖或內存屏障東西安全的,但我能找到Linux驅動程序相當多的代碼誰不會,或者只是保護寫情況。 我們是否真的需要互斥讀寫和寫入大小寫?我需要一個互斥鎖來保護可以通過sysfs獲取/設置的int值嗎?

+0

使用你SHM? (共享內存段) – rak007

+0

不是。我的情況是,例如,我有一個RW寄存器「REG」,並在司機我緩存它與「INT REG」的值,然後創建一個sysfs文件,讓我們說,「/sys/.../reg」。當用戶回聲int值到「/sys/.../reg」,此值將被寫入到REG,和緩存爲「int REG」;當用戶cat「/sys/.../reg」時,驅動程序會給用戶「int reg」。我的問題是,我是否需要添加一個互斥鎖來保護echo int和cat case的「int reg」? –

+0

如果您在多進程/線程文件寫作,也許這篇文章可以幫助你:https://stackoverflow.com/questions/26565498/multiple-threads-writing-on-same-file – rak007

回答

0

這取決於CPU和被執行的代碼在系統上。其實如果操作原子你可以做到這一點沒有同步技術。只要你不確定這一點,最好使用同步對象。對於int/dword值,大多數情況下,人們在沒有sych對象的情況下執行此操作。

閱讀這篇文章 http://preshing.com/20130618/atomic-vs-non-atomic-operations/

,也是一個同樣的問題Are C++ Reads and Writes of an int Atomic?

+0

感謝您的解釋和您的鏈接:-) –

相關問題