首先要知道的是:进程和线程的关注点是不一样的:进程间资源是独立的,关注的是通讯问题;线程间资源是共享的,关注的是安全问题。
操作系统进程间通信的方式有哪些?
管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
有名管道(named pipe):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程之间的通信。
消息队列(message queue):消息队列是消息的链表,存放在内核中并由消息队列表示符标示。消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限制等缺点。
如果有正在学java的程序员,可来我们的java技术学习扣qun哦:82368,6266里面免费送java的视频教程噢! 小编也是一名从事了6年java开发的全栈工程师,花了近一个月整理了一份较适合18年学习的java干货,送给每一位java 小伙伴,欢迎初学和进阶中的小伙伴。
共享内存(shared memory):共享内存就是映射一段内被其它进程所访问的内存,共享内存由一个进程创建,但是多个进程都可以访问。共享内存是最快的IPC,它是针对其它进程通信方式运行效率低的而专门设计的。它往往与其它通信机制。如信号量,配合使用,来实现进程间的同步和通信。
套接字(socket):套接字也是进程间的通信机制,与其它通信机制不同的是,它可以用于不同机器间的进程通信。
信号(signal):信号是一种比较复杂的通信方式,用于通知接受进程进程某个时间已经发生。
信号量(semaphore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。
它常作为一种锁的机制,防止某进程正在访问共享资源时,其它进程也访问该资源。因此它主要作为不同进程或者同一进程之间不同线程之间同步的手段。
领取专属 10元无门槛券
私享最新 技术干货