1.前言 之前在看<unix环境高级编程>第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊.今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧.晚上回来google了一下,再次参考APUE,认真总结一下,加深理解. 2.基本概念 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程.子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束. 当一个 进程完成…
了解新知识之前需要知道的一些知识 同步(synchronous):一个进程在执行某个任务时,另外一个进程必须等待其执行完毕,才能继续执行 #所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不会返回. #按照这个定义,其实绝大多数函数都是同步调用. #但是一般而言,我们在说同步.异步的时候,特指那些需要其他部件协作或者需要一定时间完#成的任务. #举例: #1. multiprocessing.Pool下的apply #发起同步调用后,就在原地等着任务结束, #根本不考虑任务是在计…
本次给大家介绍Python的多线程编程,标题如下: Python多线程简介 Python多线程之threading模块 Python多线程之Lock线程锁 Python多线程之Python的GIL锁 Python多线程之ThreadLocal 多进程与多线程比较 多进程与多线程比较之执行特点 多进程与多线程比较之切换 多进程与多线程比较之计算密集型和IO密集型 Python多线程简介 一个进程由若干个线程组成,在Python标准库中,有两个模块thread和threading提供调度线程的接口.…
你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行.你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发.你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行. 并发的关键是你有处理多个任务的能力,不一定要同时.并行的关键是你有同时处理多个任务的能力. 所以我认为它们最关键的点就是:是否是『同时』. 如果某个系统支持两个或者多个动作(Action)同时存在,那么这个系统就是一个并发系统.如果某个系统支持两个或者多个动作同时执…
Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发. 下面讲的是Socket模块功能: 1.Socket 类型 套接字格式: socket(family,type[,protocal]) 使用给定的地址族.套接字类型.协议编号(默认为0)来创建套接字. 2.Socket函数 注意点: 1)TCP发送数据时,已建立好TCP连接,所以不需要…
误解一:并发就是多线程 实际上多线程只是并发编程的一种形式,在C#中还有很多更实用.更方便的并发编程技术,包括异步编程.并行编程.TPL 数据流.响应式编程等. 误解二:只有大型服务器程序才需要考虑并发 服务器端的大型程序要响应大量客户端的数据请求,当然要充分考虑并发.但是桌面程序和手机.平板等移动端应用同样需要考虑并发编程,因为它们是直接面向最终用户的,而现在用户对使用体验的要求越来越高.程序必须能随时响应用户的操作,尤其是在后台处理时(读写数据.与服务器通信等),这正是并发编程的目的之一.…
Java的并发编程是依赖虚拟机内存模型的三个特性实现的: (1).原子性(Atomicity): 原子性是指不可再分的最小操作指令,即单条机器指令,原子性操作任意时刻只能有一个线程,因此是线程安全的. Java内存模型中通过read.load.assign.use.store和write这6个操作保证变量的原子性操作. long和double这两个64位长度的数据类型java虚拟机并没有强制规定他们的read.load.store和write操作的原子性,即所谓的非原子性协定,但是目前的各种商业…
进程和线程究竟是什么?如何使用进程和线程?什么场景下需要使用进程和线程?协程又是什么?协程和线程的关系和区别有哪些? 程序切换-CPU时间的分配 首先,我们的任何一个程序都需要运行在一个操作系统中,如 Windows XP, RedHat Linux, FreeBSD, AIX 等: 其次,在操作系统中运行的程序,不止一个,而是成百上千个不同功能的程序,如键盘驱动,显示器驱动,HTTP服务,游戏,聊天,网页......: 最后,CPU等资源是有限的,在这成百上千个程序中,不可能每个程序都占用一个…
时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的.如果在时 间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程.如果进程在时间片结束前阻塞或结束,则CPU当即进行切换.而不会造成CPU资源浪费.在 宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行.但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一 种方法就是引入时间片,每个程序轮流执行. 分时操作系统是把CP…
要了解二者的区别与联系,首先得对进程与线程有一个宏观上的了解. 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位.每一个进程都有一个自己的地址空间,即进程空间或(虚空间).进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216 ,而 32 位处理机的进程空间大小为 232 .进程至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态. 线程,在网络或多用户环境下,一个服务器通常需要接收大量…