|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UNIX编程三部曲之第三曲如何实现加减乘除服务线程池(上)
7 D8 F2 @5 m I3 ?4 V9 y
3 C. b1 |% W( `2 b3 Z一、程序框架设计: T0 b& T2 M4 F7 o7 `7 u) I& _
. c% _8 y1 ]3 F6 D1 _- G' h
1.1 课题要求4 }: g& ]* b1 `) E% |
1 e9 r$ F4 {. w/ ?' `1、使用多个队列,每一个计算线程有独立的队列用于存储计算请求,请求线程可用一个队列用于接收结果。" l9 `, k& m. Q, A* L. o' n, [
. G i" ?" Q# C4 @
2、实现A(+,-,X,/)B简单两元计算。+ y6 o8 n( h* V. ?3 F* J
; E# W( ?& V1 D3、请求线程与计算线程是多对多关系。
/ ]$ s& i1 v) _) f$ ]
. Q5 Z% T4 X8 b- V& j$ | % _; E% G! R% {' E K
1.2 基本概念回顾
* L. U g# G# e; o7 |+ v8 N) E; q3 b2 @/ ^/ J3 a/ e
1.2.1 线程的定义( {; N, p+ W1 _4 {
. v3 V8 X! N6 r- u3 z4 x D
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组 成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程 在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。
- C) J; d$ s1 N; {. f8 M; ?% a, ]3 A0 \' l/ V ~0 N9 v
线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。4 z& S. V( y1 H! P2 z
# W p9 x/ [. E7 n1 f3 g5 ?+ H
1.2.2 线程的特点
5 \8 [* i6 @# r* |; }% o- m$ @% K7 W. J) H0 e
在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。线程具有以下属性。
$ |+ [; W, h# h/ `; H
7 X5 f) R$ e) _% r8 Z$ C- u1)轻型实体
: C- T2 C L7 Z9 }
" h3 ?& E+ J) r3 ~4 X: O9 }+ R) }2 } a
- o/ o, T( ^ | |
|