Chinaunix首页 | 论坛 | 博客
  • 博客访问: 954733
  • 博文数量: 335
  • 博客积分: 10287
  • 博客等级: 上将
  • 技术积分: 3300
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-08 15:29
文章分类

全部博文(335)

文章存档

2015年(4)

2014年(15)

2013年(17)

2012年(11)

2011年(12)

2010年(96)

2009年(27)

2008年(34)

2007年(43)

2006年(39)

2005年(37)

我的朋友

分类: C/C++

2009-02-27 16:26:02

Case message Of

连接请求:

{ If(有空槽)

{ 建立网络链路通道 chan;

If(功能号 = 1)

建立新线程,指定 funcl(chan)为执行代码,注意此时该线程并未执行

Else

建立新线程,指定 func2(chan)为执行代码

EndIf

Else

拒绝服务请求

}

断开连接:

{ 查找到相应的网络链路和提供服务的线程;

取消该链路;

删除该线程

}

其他:

其他控制操作

EndCase

}

End

在各个服务子程序中,它根据主程序传来的网络链路通道号,与自己对应的客户进行通信:

While(TRUE) {

同步读取服务请求;

If (读取失败) Exit;

执行服务操作;

返回服务结果

}

服务线程同步读取客户的请求信息,在读取之前,它处于等待状态。如果主控线程已取消了相应的链路通道,则读取操作失败,服务线程终止,并被主控线程删除。从算法可以看出主控线程通过邮箱监视网络上的控制信息(包括客户的连接请求、断开连接,以及其他控制),而每个客户需要的服务由专用的服务线程来处理:当某些线程在网络上读写信息的时候,另外的线程可能正在进行数据处理,还有些线程正在访问磁盘,等等。所有的线程并行工作,为客户提供了最大限度的服务。不但解决了原始的串行服务方式中系统资源利用率低的问题,而且又没有并发多进程带来的庞大系统开销的缺陷。从这个例子可以看出,并发多线程在分布式程序设计中的优越性。

多线程对程序结构的改变

多线程改变了程序的基本结构。不同于按照严格的线性方式执行的单线程程序,多线程程序并发地执行它自身的各个部分。这样,所有的多线程程序都包含了相似的元素。因此,多线程程序的主要问题是管理线程之间的交互。

所有的进程都至少包含一个执行线程,称之为主线程。主线程在程序开始时创建。在多线程程序中,主线程创建一个或者多个子线程。因此,每个多线程的进程都以一个执行线程开始,然后创建一个或者多个附加的线程。在设计合理的程序中,每个线程都代表一个逻辑上独立的活动单元。

多线程的主要优点是可以让您编写非常高效的程序,因为它使得您可以利用大多数程序都具有的空闲时间。大多数的I/O设备,无论是网络端口、磁盘驱动器还是键盘,速度都比CPU慢很多。通常,程序将主要的执行时间都花费在等待接收或者发送数据上。通过谨慎地使用多线程,您的程序可以在空闲的时候执行另一个任务。例如,当程序的一部分通过Internet发送文件时,另一个部分可以读取键盘的输入,还有一个部分可以将下一步要发送的数据块缓存。

C++没有包含任何对多线程应用程序的内建的支持。相反,它依赖于操作系统提供这个特性。考虑到Java和C#都提供了内建的多线程支持,您

阅读(1105) | 评论(0) | 转发(0) |
0

上一篇:什么是多线程(1)

下一篇:什么是多线程(3)

给主人留下些什么吧!~~