Linux 如何同步访问同一资源的两个进程?

Linux 如何同步访问同一资源的两个进程?,linux,synchronized,Linux,Synchronized,我有两个进程访问同一个物理内存GPIO data addr。 那么,我如何在这些应用程序之间进行同步呢? 我知道我们有一些锁机制,比如互斥和信号量,那么哪种方法最快呢 谢谢你的帮助 -nm互斥体和信号量通常被认为是同一地址空间中的并发解决方案,这意味着同一程序的不同部分将使用其中一种装置锁定对资源的访问 当您处理单独的进程时,在Linux上执行此操作的标准方法是在/var/lock中创建一些内容,如/var/lock/myapp.lock,以及。然后,其他进程将检查它的存在,如果您很狡猾,请检查

我有两个进程访问同一个物理内存GPIO data addr。 那么,我如何在这些应用程序之间进行同步呢? 我知道我们有一些锁机制,比如互斥和信号量,那么哪种方法最快呢

谢谢你的帮助


-nm

互斥体和信号量通常被认为是同一地址空间中的并发解决方案,这意味着同一程序的不同部分将使用其中一种装置锁定对资源的访问

当您处理单独的进程时,在Linux上执行此操作的标准方法是在/var/lock中创建一些内容,如/var/lock/myapp.lock,以及。然后,其他进程将检查它的存在,如果您很狡猾,请检查PID以确保它仍然存在


如果您需要实时访问该区域,请跳过文件系统,进程将必须通过IPC进行通信。完成时请告诉我,好的,您知道了,或者-更好-编写一个进程,其唯一目的是读取和写入GPIO内存,而您的其他程序通过IPC与之通信可能是最好的方法。

互斥体和信号量通常被认为是同一地址空间中的并发解决方案,这意味着同一程序的不同部分将使用这些装置之一锁定对资源的访问

当您处理单独的进程时,在Linux上执行此操作的标准方法是在/var/lock中创建一些内容,如/var/lock/myapp.lock,以及。然后,其他进程将检查它的存在,如果您很狡猾,请检查PID以确保它仍然存在


如果您需要实时访问该区域,请跳过文件系统,进程将必须通过IPC进行通信。完成时请告诉我,好的,您知道了,或者-更好-编写一个进程,其唯一目的是读取和写入GPIO内存,您的其他程序通过IPC与之通信可能是最好的方法。

互斥意味着互斥-信号量只是一个用于确定资源是否正在使用的变量。在windows中,可以创建一个互斥对象来保护共享资源

问题是你用的是什么语言?我假设linux是什么操作系统。大多数语言都支持多线程和互斥,您应该使用内置结构

例如,在Linux上使用C,您可能希望

包括信号量


并查找对sem_init、sem_wait等的调用。

互斥表示互斥-信号量只是用于确定资源是否正在使用的变量。在windows中,可以创建一个互斥对象来保护共享资源

问题是你用的是什么语言?我假设linux是什么操作系统。大多数语言都支持多线程和互斥,您应该使用内置结构

例如,在Linux上使用C,您可能希望

包括信号量


并查找对sem_init、sem_wait等的调用。

问题被标记为Linux。问题被标记为Linux。互斥量和信号量当然可以跨进程使用。锁文件方法将比这两种方法都慢。特别是,Linux上的POSIX互斥体和条件变量支持共享内存,使用pthread_mutexattr_setpshared和friends。这可能是Linux上可用的开销最低的IPC机制。然而,正确使用互斥量和信号量要复杂一些。互斥量和信号量当然可以跨进程使用。锁文件方法将比这两种方法都慢。特别是,Linux上的POSIX互斥体和条件变量支持共享内存,使用pthread_mutexattr_setpshared和friends。这可能是Linux上可用的开销最低的IPC机制。然而,正确使用它要复杂一些。