linux – 将mutexes / semaphores与进程一起使用
发布时间:2020-12-14 01:04:49 所属栏目:Linux 来源:网络整理
导读:到目前为止,我在线阅读的几乎所有代码和教程都涉及使用互斥锁和信号量来实现线程之间的同步.它们可以用于在进程之间进行同步吗? 我想编写看起来像这样的代码: void compute_and_print() { // acquire mutex // critical section // release mutex}void mai
到目前为止,我在线阅读的几乎所有代码和教程都涉及使用互斥锁和信号量来实现线程之间的同步.它们可以用于在进程之间进行同步吗?
我想编写看起来像这样的代码: void compute_and_print() { // acquire mutex // critical section // release mutex } void main() { int pid = fork(); if ( pid == 0 ) { // do something compute_and_print(); } else { // do something compute_and_print(); } } >有人能指出我这样做的类似代码吗? 解决方法
对的,这是可能的.有许多方法可以同步不同的进程.也许这个领域中最受欢迎的互斥解决方案是0700年的
System V IPC semaphores和
atomic operations.我建议你阅读David A Ruslin的书第
Interprocess Communication Mechanisms页的第5章,或者说更好 – 整本书.
至于你的第二个问题,商品硬件上的大多数现代操作系统会将进程放在不同的地址空间中,尽管进程也可能共享相同的地址空间(参见Virtual Memory,Memory Protection).无论哪种方式,如果IPC机制由内核处理,那么两个进程将引用相同的“内核对象”,如您所述.如果在没有内核的情况下(几乎)实现互斥(例如某种使用“共享内存”的自旋锁),则两个进程都会引用相同的物理内存,即使它们的内存虚拟地址可能不同. 希望能帮助到你.祝好运! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |