|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UNIX编程三部曲之第三曲如何实现加减乘除服务线程池(上)/ n6 w- f& P, R7 c' B
: z- r% @$ I7 S1 M$ e2 Y一、程序框架设计
9 o/ M4 T- }* c5 o, W, S6 C0 B0 V) G$ \* T( R
1.1 课题要求
! b/ V* s: W5 m
3 {' ~" P6 v+ T' e1、使用多个队列,每一个计算线程有独立的队列用于存储计算请求,请求线程可用一个队列用于接收结果。1 `6 x7 L, d3 `7 d$ g( f8 K. w, [
/ Q) k7 \- ?, k
2、实现A(+,-,X,/)B简单两元计算。2 |" N9 D; R& m! d' ?1 W+ E" c
: d( D! v2 I8 o$ {# W3、请求线程与计算线程是多对多关系。! ~* n! {1 l0 G1 R2 V9 L1 }
! n U: Q6 e% f& {6 d: A9 b
8 _. t+ U+ W0 q
1.2 基本概念回顾* m( q0 k8 [* m8 W% _6 Q
5 W; n6 @# W, @$ S
1.2.1 线程的定义6 ~% c- Q/ N" w6 W1 v8 S- T
w, Z+ C% v% G3 g+ M线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组 成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程 在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。& ?4 B6 o6 m$ \2 v8 U
/ w; m) N `* H; q0 J9 J线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
' s7 S5 |" n/ E- w( L" y5 O$ j; }4 H7 ~& B+ y8 B6 _: l$ o
1.2.2 线程的特点
) n* x# \# O: F/ t
/ C9 W& E8 C' J2 a: S: r在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。线程具有以下属性。" x5 M5 r- {7 ^! y+ i! [8 v2 G
* B2 y0 x4 S3 E6 r$ Q& L; J( F0 H
1)轻型实体
1 O6 K; \! }. ^8 e; @
' J d* M; q# f. N- d) T$ \ N9 f) f# y7 x+ L: H
. H2 ~6 y' A A% o6 \1 O |
|