欢迎来到天天文库
浏览记录
ID:39059704
大小:322.51 KB
页数:16页
时间:2019-06-24
《《网络中的并发处理》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、网络游戏编程网络中的并发处理并发处理并行计算:微观意义上讲,两个或多个计算任务在同一时刻发生,即这些计算物理上同时发生,称之为并行计算。在计算机体系中,可以利用多用户的操作系统,使用多处理器实现真正的并行计算。并发处理:单处理器体系中,可以通过分时技术,在多任务间快速切换使用单处理器,从而模拟并行计算。无论是真正的并行计算,还是对并行计算的模拟,从宏观上看,都是为了实现多个计算任务同时向前推进。计算机系统同时处理多任务的方式,可以称为并发处理。并发处理并发处理的应用1.并发处理可以出现在同一网络的主机中,许多对应用程序可以并发通信,分享网络。2.并发处理也可以出现在
2、特定的计算机系统中。例如,在一个分时系统中的多用户。3.一组机器上的多用户也可以并发处理。当在多主机上运行客户端时,可以实现并发处理;一个多任务操作系统也可允许在单个主机上并发运行多份程序拷贝。多主机上的多用户并行处理,多任务操作系统允许单台计算机上多份拷贝并行处理并发处理客户端的并发处理客户端软件通常不需要实现并发处理。如果操作系统运行多用户分别打开客户端,多个客户端之间的并发是自动处理的。一个客户端程序就像任何普通的应用程序一样,不需要明确的管理其并发运算。服务器端的并发处理服务器端必须同时处理多个请求。服务器端软件必须通过明确的编程过程处理同时发生的数据请求。
3、服务器端处理多个数据请求进程进程不同于程序(program)。因为进程是处于活动执行状态中的,而不是指保存在磁盘中的文件。当代码被载入计算机时,操作系统允许执行一个或多个相应的实例。并发处理操作系统允许多个进程在同一时间执行同样的代码片段。这意味着每个进程的运行都是独立的,在一个单CPU架构中,从微观角度看,在特定时刻CPU只能执行一个进程。操作系统迅速在不同的进程间切换,似乎在同一时刻执行了多个进程。从人的观察角度看,很多进程正在同时执行。我们使用并发运行来阐述这样的概念,它意味着“显得同时执行”。在一个单CPU系统中,操作系统执行并发处理。在多CPU系统中,每一
4、个CPU都同时与其他CPU共同执行进程。当然,编程人员在进行并发编程时,不需要知道底层硬件由单CPU还是多CPU构成。线程什么是线程?一些操作系统提供了并发处理的第二种形式——并发执行线程。线程也拥有自己的指令指针以及本地变量的拷贝,并且相对于其他线程独立运行。线程机制不同于进程机制,但是每一个线程必须依附于一个单独的进程。虽然每个线程都有本地变量的拷贝,但是所有线程都分享全局变量的单份拷贝。更重要的是,在一个线程中的所有线程将分享操作系统分配给进程的资源,包括网络通信所使用的描述符。一个并发程序能够通过创建多个独立的进程来实现,也可以通过创建一个多线程的进程来实现
5、多线程设计的一个潜在缺陷在于相互间的冲突。因此,编写多线程代码的程序员必须要避免造成这样的问题。线程过程调用在面向过程的编程语言中,所执行的代码能够包含对子程序的调用。如果同时执行多线程代码,这些线程能够访问被调用函数的不同位置。面向过程的编程语言在过程调用中将使用堆栈系统。在不同的线程中使用了独立的过程调用。当多线程并发执行一段代码时,每一个线程都有独立的活动记录堆栈。线程for(i=1;i<=count;i++){/*从1到count的循环*/实例(非多线程版本):printf("Thevalueofiis%d",i);#includef
6、flush(stdout);/*更新输出缓冲区*/#includesum+=i;#include}intaddem(int);printf("Thesumis%d",sum);intmain(intargc,char*argv[])fflush(stdout);{return0;/*终止运行*/addem(5);}return0;}程序执行结果为:Thevalueofiis1intaddem(intcount)Thevalueofiis2{Thevalueofiis3inti,sum;/*定义局部变量*/Thevalueo
7、fiis4sum=0;Thevalueofiis5Thesumis15线程for(i=1;i<=count;i++){/*从1到count的循环*/实例(多线程版本):printf("Thevalueofiis%d",i);fflush(stdout);/*更新输出缓冲区*/#includesum+=i;#include}#includeprintf("Thesumis%d",sum);intaddem(int);fflush(stdout);intmain(intargc,char*argv[
此文档下载收益归作者所有