进程和多线程
沁园春.雪.
这个作者很懒,什么都没留下…
展开
-
进程IPC---管道和有名管道
无名管道:①管道是内核管理的一个缓冲区,管道是单向的、先进先出的、无结构的、固定大小的字节流,它把一个进程的标准输出和另一个进程的标准输入连接在一起。写进程在管道的尾端写入数据,读进程在管道的首端读出数据。数据读出后将从管道中移走,其它读进程都不能再读到这些数据。管道提供了简单的流控制机制。 ②管道为空时,在有数据写入管道前,读进程将一直阻塞。同样,管道已经满时,进程再试图写管道,在其它进程从管道转载 2017-10-01 17:17:42 · 269 阅读 · 0 评论 -
死锁概念?产生死锁必要条件?如何防止死锁?
死锁概念: 所谓死锁,是指两个或者两个以上线程在执行过程中,因争夺资源而产生互相等待的现象,若无外力作用,他们都将无法推进下去,此时,称系统处于死锁。死锁产生的四个必要条件: (1)互斥条件:进程对所分配的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时,还有其它的进程请求该资源,则请求者只能等待。 (2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,但原创 2017-10-03 20:34:29 · 5401 阅读 · 0 评论 -
挂起和阻塞区别?sleep()和wait()的区别?
挂起和阻塞区别: (1)挂起是一种主动行为,因此恢复也应该要主动完成。而阻塞是一种被动行为,是在等待事件或者资源任务的表现,你不知道它什么时候被阻塞,也不清楚它什么时候会恢复阻塞。 (2)阻塞(pend)就是任务释放CPU,其他任务可以运行,一般在等待某种资源或者信号量的时候出现。挂起(suspend)不释放CPU,如果任务优先级高,就永远轮不到其他任务运行。一般挂起用于程序调试中的条件中断,当原创 2017-10-03 20:04:57 · 12747 阅读 · 9 评论 -
线程的概念?使用线程的好处?及线程与进程的区别?
线程的概念: (1)一个标准的线程由线程ID、计数器(当前指令指针pc)、寄存器集合和堆栈组成。 (2)线程是进程中执行运算的最小单位,是进程的一个实体,是被系统独立调度和分派的基本单位。 (3)线程自己不拥有资源,只拥有一点运行中必不可少的资源,它与同一进程的其它线程一起共享进程所拥有的全部资源。使用多线程的好处: (1)易于调度 (2)提高并发性 (3)开销少(创建线程比创建进程快,原创 2017-10-03 19:53:11 · 614 阅读 · 0 评论 -
线程间的通信机制
线程间的通信的主要目的是用于线程同步。 可以分为: - 1.锁机制 : 互斥锁 自旋锁 读写锁 条件变量 - 2.信号量 - 3.信号//=====================================================互斥锁: 是一种信号量,常用来防止两个进程或者线程之间同原创 2017-10-03 11:24:04 · 846 阅读 · 0 评论 -
进程间的通信方式?
1. 无名管道:管道是内核的一个缓冲区。管道是单方向的、先进先出的无结构的,固定大小的字节流,管道将一个进程的标准输出和和另一个进程的标准输入连接在一起,在管道的尾部写入数据,从管道的头部读出数据,数据从管道读出后,管道中的该数据也将被移走。管道只能用于具有血缘关系的进程间通信。2. 有名管道:有名管到个无名管道一样,都是半双工通信,最大额不同是:有名管道克服了管道只能用于具有血缘关系的进程间通信,原创 2017-10-03 10:34:24 · 249 阅读 · 0 评论 -
进程IPC---流式套接字
// 转载自:http://blog.csdn.net/ljianhui/article/details/10477427 前面说到的进程间的通信,所通信的进程都是在同一台计算机上的,而使用socket进行通信的进程可以是同一台计算机的进程,也是可以是通过网络连接起来的不同计算机上的进程。通常我们使用socket进行网络编程,这里将会简单地讲述如何使用socket进行简单的网络编程。一、什么是so转载 2017-10-02 14:23:38 · 351 阅读 · 0 评论 -
进程IPC---信号量
// 转载:http://blog.csdn.net/ljianhui/article/details/10243617一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Li转载 2017-10-01 21:30:18 · 228 阅读 · 0 评论 -
进程IPC---信号
// 转载: http://blog.csdn.net/ljianhui/article/details/10128731一、什么是信号用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中的进程捕获到这个信号然后作出一定的操作并最终被终止。信号是UNIX和Linux转载 2017-10-01 22:25:21 · 258 阅读 · 0 评论 -
进程IPC---共享内存
// 转载http://blog.csdn.net/ljianhui/article/details/10253345 下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到转载 2017-10-01 20:36:16 · 219 阅读 · 0 评论 -
进程IPC---消息队列
转载:http://blog.csdn.net/ljianhui/article/details/10287879一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linu转载 2017-10-01 19:37:57 · 273 阅读 · 0 评论 -
thread中join和detach的区别
// 原文部分摘录自:http://blog.csdn.net/xibeichengf/article/details/71173543在任何一个时间点上,线程是可结合的(joinable)或者分离的(detached)。一个可结合的线程能够被其它线程回收资源和杀死。在被其它线程回收之前,它的存储器资源(例如栈)是没有被释放的。相反一个分离的线程是不能被其它线程回收或者杀死的。它的存储器资源在它终止原创 2017-10-04 10:32:20 · 1450 阅读 · 0 评论