|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UNIX编程三部曲之第三曲如何实现加减乘除服务线程池(上)# w8 ]7 o8 f! w! o, F
. ? h) D) s* q: z7 @8 B
一、程序框架设计& K; b, s" |, ]4 ~, C9 m% I N
' K) I" u6 \2 `% i9 j; l$ j1.1 课题要求+ z( |! [5 p5 c
4 w, Z& p# Q; Q( ^" j1 z1、使用多个队列,每一个计算线程有独立的队列用于存储计算请求,请求线程可用一个队列用于接收结果。
! F+ O. G7 _! k; @0 A+ U
9 T. \/ K" ~8 R* a3 I. n2、实现A(+,-,X,/)B简单两元计算。
; N, V! F+ W& Y" ?2 o7 @) W
" @5 N) b, A7 X3、请求线程与计算线程是多对多关系。# n5 ]4 ]. r& H1 Z/ [, N$ P
+ l; b% h. f* _- f$ L4 x2 ]9 i% H( h , w3 Q6 N$ ]7 o
1.2 基本概念回顾
( ?4 C. v9 M% A# d2 a5 C: f6 h* L
5 e6 x" I+ {+ o5 }3 O6 A9 Z1.2.1 线程的定义
* K# J, c$ P) y5 j7 y! j* k# X/ |- ?0 q. O: M S, M8 `' C- l, [; F
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组 成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程 在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。
/ _" x+ K) N+ I. l' A
* h) u" b, H+ `3 G, ?! y线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
, Z6 m; F) O4 Q; _" ?" v7 t
. j- h$ y* U' N: u* K+ ~; s. P1.2.2 线程的特点" k$ |$ S0 B2 l
! D/ w% v3 Z- R a在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。线程具有以下属性。
$ e/ |* z! A: Y$ h7 r7 x# X
}/ V+ v8 h1 q: @ [. X! G1)轻型实体# B1 w5 u) i; r8 ?
) y- j/ |8 d; V
' }3 T7 R. {/ U, ], V T, e
4 ]5 l. y0 l, A1 m L |
|