Linux下的IPC与ITC

IPC:消息队列,共享内存,信号集,管道,套接字,内存映射,信号;
前3个如果没有显示销毁,程序结束时仍旧不会被销毁,除非重启或者显示销毁;共享内存和内存映射要保证进程的同步互斥,方法可以使用其它的IPC。同时可以使用信号量(信号集有多个信号量)。把信号量创建在共享的内存中,这样就可以通过信号量同步互斥。pthread动态库提供的信号量是sem_t,利用sem_init初始化时,把pshared设置为非零。如下图所示。
在这里插入图片描述
ITC:凡是IPC的方法,都可以实现ITC,除此之外,还有互斥锁,读写锁,条件变量等。注意使用mutex时,Linux下要用-pthread链接动态库。

注意:锁不能实现IPC,即使是把锁变量放置在共享内存区域中:该锁是被某一个进程所创建,一旦有一个进程对锁进行了锁操作,则其它进程访问该锁都会被阻塞,之后如果锁被释放,被阻塞的进程感知不到,会继续阻塞。不过使用信号量可以。

你可能感兴趣的:(linux)