20155216 2017-2018-1 第八周课下作业2
首先要解决的问题:
1. 什么是多线程?
线程是进程内的并发,是进程中的一个执行控制单元。
使用线程的好处
1、使用线程可以把占据长时间的程序中的任务放到后台去处理
2、用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度
3、程序的运行速度可能加快
4、在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,使用线程我们可以释放一些珍贵的资源如内存占用等等
2.什么是多进程?
同一个时间里,同一个计算机系统中允许两个或两个以上的进程处于并行状态,这是多进程。多进程带来的好处是你可以边听mp3边上网,与此同时甚至可以将下载的文档打印出来,而这些任务之间丝毫不会相互干扰。但并行需要解决的问题是通常并行的进程比CPU数量多得多,而原则上一个CPU只能分配给一个进程(引入线程后,CPU调度的基本单位是线程,进程是资源分配的最小单位),以便运行这个进程。而要让CPU同时运行多个进程,就必须使用并发技术,实现并发技术最常见的就是时间片轮转调度算法,即在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如1毫秒),这样用户根本感觉不出来 CPU是在轮流为多个进程服务,就好象所有的进程都在不间断地运行一样,给用户的感觉就是并行。但实际上在任何一个时间内有且仅有一个进程占有CPU。
作业内容:
把daytime服务器分别用多进程和多线程实现成并发服务器并测试。
多进程实现daytime服务器
服务器端
客户端
运行截图
多线程实现daytime服务器
服务器源代码:
客户端代码:
运行截图:
总结
**多进程和多线程的概念可以概括为一条河流。
1.纵向的是多线程,进程就像河流,线程就是分流,线程从一个进程中衍生出来。河流可以把水引向分流分担自身的流水量,且各个分流是同时流水的(并发),它们共享了一个源头(共享变量);
2.横向的是多进程,一条河流从源头上几乎完全与另一条河流一样,但由于一些环境的不同,造成了两者最后的流向、各个分流的流量可能会不一样,但是两条河流同时在流水(并发)。