当前位置: 技术问答>linux和unix
请教大家些进程的问题!!!
来源: 互联网 发布时间:2016-04-22
本文导语: 1:信号量操作函数问题 书上说,进程和线程的信号量操作函数是不一样的,但看到不少代码在多进程间操作信号量是,使用的都是sem_post;sem_wait这些函数?这样用可以吗?进程有本身的一套信号量操作函数,可似乎看到用的...
1:信号量操作函数问题
书上说,进程和线程的信号量操作函数是不一样的,但看到不少代码在多进程间操作信号量是,使用的都是sem_post;sem_wait这些函数?这样用可以吗?进程有本身的一套信号量操作函数,可似乎看到用的不多.
2:多进程的同步问题
a: 两个无血缘关系的进程,如何实现同步?
b: 有血缘关系的呢?比如,父子进程,或者两个兄弟进程呢?
请知道的人给我解惑,多谢了.
书上说,进程和线程的信号量操作函数是不一样的,但看到不少代码在多进程间操作信号量是,使用的都是sem_post;sem_wait这些函数?这样用可以吗?进程有本身的一套信号量操作函数,可似乎看到用的不多.
2:多进程的同步问题
a: 两个无血缘关系的进程,如何实现同步?
b: 有血缘关系的呢?比如,父子进程,或者两个兄弟进程呢?
请知道的人给我解惑,多谢了.
|
Linux中的进程和线程在实现上是相同的,没有本质的差别。因为Linux的fork是轻量级的,所以没有别的操作系统,比如windows中的进程控制块和线程控制块的区别。
a: 两个无血缘关系的进程,如何实现同步?
传递数据:
命名管道
Socket
共享内存
同步:
封装过的也就是你说的sem_init...
b: 有血缘关系的呢?比如,父子进程,或者两个兄弟进程呢?
传递数据:
除了命名管道、socket、共享内存外,还可以使用全局变量、管道(非命名的管道)。
同步:
sem_init
在内核级的同步一般采用spinlock、mutex(sem的特例)
推荐图书:
《Linux内核设计与实现》 (入门必读,否则直接看其他的图书比如《Linux设备驱动程序3rd》,会有一种被悬空的感觉,上不去也下不来,不容易入门。)
a: 两个无血缘关系的进程,如何实现同步?
传递数据:
命名管道
Socket
共享内存
同步:
封装过的也就是你说的sem_init...
b: 有血缘关系的呢?比如,父子进程,或者两个兄弟进程呢?
传递数据:
除了命名管道、socket、共享内存外,还可以使用全局变量、管道(非命名的管道)。
同步:
sem_init
在内核级的同步一般采用spinlock、mutex(sem的特例)
推荐图书:
《Linux内核设计与实现》 (入门必读,否则直接看其他的图书比如《Linux设备驱动程序3rd》,会有一种被悬空的感觉,上不去也下不来,不容易入门。)
|
1、进程间跟线程间同步都可以使用信号量,但线程间一般直接使用无名信号量,进程间使用有名信号量.对信号量的操作是一样的都是sem_post, sem_wait.
2、两个亲戚关系的进程,可使用有名信号量同步,还有sysv IPC 的信号集。
有亲戚关系的进程,可以使用有名信号量,也可以使用无名信号量,使用无名信号量的前提是用mmap把信号量的内存共享出来。
2、两个亲戚关系的进程,可使用有名信号量同步,还有sysv IPC 的信号集。
有亲戚关系的进程,可以使用有名信号量,也可以使用无名信号量,使用无名信号量的前提是用mmap把信号量的内存共享出来。
|
管道、有名管道
https://www.ibm.com/developerworks/cn/linux/l-ipc/part1/
消息队列
https://www.ibm.com/developerworks/cn/linux/l-ipc/part3/
信号灯
https://www.ibm.com/developerworks/cn/linux/l-ipc/part4/
https://www.ibm.com/developerworks/cn/linux/l-ipc/part1/
消息队列
https://www.ibm.com/developerworks/cn/linux/l-ipc/part3/
信号灯
https://www.ibm.com/developerworks/cn/linux/l-ipc/part4/