计算机网络编程 第二讲 客户-服务器软件中的并发处理.ppt

计算机网络编程 第二讲 客户-服务器软件中的并发处理.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

?计算机网络编程?;目录;并发有真正的并发〔并行:Parallelism〕和外表上的并发〔并发:Concurrency〕〔一般采用分时机制〕;单个网络各个机器之间许多成对进程好似独立使用网络资源〔通道,机器等〕

一个计算机系统中存在并发〔分时〕

一组机器上所有的客户之间存在并发;;单台机器中的各个客户,一组机器上的所有客户之间也可以存在并发。〔图3.1〕

要使客户软件并发执行,一般并不需要程序员为此特别花功夫。〔因为现代操作系统一般允许用户并发地执行客户程序〕;多进程操作系统

进程的概念:进程定义了一个计算的根本单元,它是一个执行某一个特定程序的实体,它拥有独立的地址空间、执行堆栈、文件描述符等。

线程:一个进程可包含多个线程,线程特点:

轻型实体〔根本不拥有系统资源〕

独立调度和运行的根本单位

可并发执行

共享进程资源;操作系统每次只将很小一段时间〔时间片,timeslicing〕分给一个线程使用。

单个CPU在任一时刻只能执行一个线程。

操作系统通过在所有正在执行的线程间快速切换CPU,使得计算机看上去好似在同时执行多个计算;#includesys/types.h

#includeunistd.h

pid_tfork(void)

返回:

父进程中返回子进程的进程ID

子进程返回0

出错返回-1

fork后,父子进程具有相同的数据空间、代码空间、堆栈、所有的文件描述字;但相互之间互不影响;#includestdlib.h

#includestdio.h

#includesys/types.h

#inlcudeunistd.h

intsum;

voidmain(void)

{

inti;

sum=0;

for(i=1;i=5;i++)

{

printf(Thevalueofiis%d\n,i);

fflush(stdout);

sum+=i;

}

printf(Thesumis%d\n,sum);

};#includestdlib.h

#includestdio.h

#includesys/types.h

#inlcudeunistd.h

intsum;

intmain(void)

{

inti;

sum=0;

fork();

for(i=1;i=5;i++)

{

printf(Thevalueofiis%d\n,i);

fflush(stdout);

sum+=i;

}

printf(Thesumis%d\n,sum);

exit(0);

};#includestdlib.h

#includestdio.h

#includesys/types.h

#inlcudeunistd.h

intmul,sum;

intmain(void){

inti,pid;

sum=0;

mul=1;

if((pid=fork())0){

for(i=1;i=5;i++)

{printf(Thevalueofiis%d\n,i);

fflush(stdout);

sum+=I;}

printf(Thesumis%d\n,sum);

}

elseif(pid==0){

for(i=1;i=5;i++)

{printf(Thevalueofiis%d\n,i);

fflush(stdout);

mul*=i;

}

printf(Themultiplexis%d\n,mul);

}

exit(0);};#includeunistd.h

intexecl(constchar*path,constchar*arg,...);

系统调用execl执行另一个程序。但调用execl并不创立新进程,所以前后的进程ID并未改变,execl只是用另一个新程序替换了当前进程的正文、数据、堆栈;

path是要执行的二进制文件或脚本的完整路径。

arg是要传给程序的完整参数列表,包括arg[0],一般是执行程序的名字。

最后一个参数可为NULL。;intmul

文档评论(0)

mend45 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档