进程间通信和线程间同步区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhang_yin_liang/article/details/70544433

线程间通信:由于多线程共享地址空间和数据空间,所以多个线程间的通信是一个线程的数据可以直接提供给其他线程使用,而不必通过操作系统(也就是内核的调度)。

进程的通信机制主要有:管道、有名管道、消息队列、信号量、共享空间、信号、套接字。

linux中进程间通信和线程间通信的区别:
1.linux中的进程,是有fork()系统调用创建的,进程间都有独立的地址空间,他们之间不能直接通信,必须通过一些IPC进程进程间通信机制来完成。常见的IPC有:PIPE,命名管道,信号,共享内存以及socket等;
2.linux中的线程,是clone()系统调用创建的,一个进程下的线程间是共享内存空间的,故线程A可以之间访问线程B中定义的变量,但是必须注意并发的情况。
另:“线程上下文”的规模要远远小于进程上下文。


使用多线程。应用程序的调用可能适合简单的轮转调度算法,而另一个应用程序可能更适合给予优先级的调度算法。可以为应用程序量身定做调度算法而不必扰乱底层操作系统的调度程序。

线程库是一组提供应用程序共享的应用程序级别的函数,某种程序上相当于小型可以切换的调度系统。

缺点是当一个系统调用,进程中所有的线程都会阻塞。同时多线程技术也不能利用多处理器技术,一个进程只分配给一个处理器。

--《操作系统 精髓与设计原理》

猜你喜欢

转载自blog.csdn.net/zhang_yin_liang/article/details/70544433