既不回头,何必不忘;既然无缘,何必誓言;今日种种,似水无痕。 收藏本站
登陆 / 注册 搜索

阅读: 16.3K   回复: 5

[# 系统基础] 一个线程的自白

仗剑天涯论坛大牛 2016-4-16 10:45 |显示全部楼层

今生相逢便是缘分,何苦去怨恨,何苦去仇视。

主题破百
      线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。
9 X* G, W  d+ l5 q  }) H& `, O9 U& v3 C4 B( g6 R1 T* C- s
一个线程的自白 160cpu.jpg
! N, g6 I# a! d0 A1 z. G

9 I! K6 a$ `: g5 Z        我是一个线程, 我一出生就被编了个号: 0x4590,  然后被领到一个昏暗的屋子里,  这里我发现了很多和我一模一样的同伴。我身边的同伴0x6900 待的时间比较长, 他带着沧桑的口气对我说:# g3 T" X, Z# L$ W' z  ]2 f

/ z. J4 o5 K- w' ~$ t! \        “我们线程的宿命就是处理包裹。 把包裹处理完以后还得马上回到这里,否则可能永远回不来了。”' t' E  L( i  }* F
% d2 J& m: A$ S$ D+ S
        我一脸懵懂,包裹,什么包裹?
, M2 M) G# v7 D/ X- x
" A& G$ j0 |2 l5 t3 [6 T7 Z        ”不要着急,马上你就会明白了, 我们这里是不养闲人的。“
: `* g! r. i& E4 h% w9 V" C/ o
0 I9 W7 I" j1 P9 S8 @4 v        果然,没多久,屋子的门开了, 一个面貌凶恶的家伙吼道:3 e) @) N+ _7 q
) X$ n: J$ w; r& t( @
        "0x4590 ,出来!"( c8 V6 D  t8 m! a, G1 m2 J
1 T# l! X1 h) v; t/ _- u
        我一出来就被塞了一个沉甸甸的包裹,上面还有附带着一个写满了操作步骤的纸。
/ L2 R# c! b1 J4 |- F
* n5 z; f& N/ K" _( @        "快去,把这个包裹处理了。"6 _3 u% U' N* }, D2 g
' s% h0 ]' o5 l" J! p
        "去哪儿处理": u9 @8 H3 _3 L, F0 F( V
% W2 {  N( l; X8 ]9 U! S; U
        "跟着指示走, 先到就绪车间"
- c5 M" e: a6 n  S
9 q6 u+ K% I6 C        果然,地上有指示箭头,跟着它来到了一间明亮的大屋子,这里已经有不少线程了, 大家都很紧张,好像时刻准备着往前冲。+ F- D6 F+ [1 A8 @- ~

3 x6 c$ `# @) e! d$ k9 A5 V        我刚一进来,就听见广播说:“0x4590, 进入车间”5 `' c! J. [/ n6 g8 a4 V: W8 C6 p
1 o  {; [' n1 K* P% t; j
        我赶紧往前走, 身后很多人议论说:
/ i5 L+ W+ X; _! r3 I3 c8 N6 K4 v9 k0 v* w) i9 q& A
        ”他太幸运了, 刚进入就绪状态就能运行“6 |0 |& C. c, F7 ]
. e5 _2 F. W. L/ k. H
        ”是不是有关系?“0 C) j3 S, j* [% ?
# ^8 l4 n9 A2 U& m( a+ Y' N
        ”不是,你看人家的优先级多高啊, 唉“! ?3 ]/ _+ V( j8 X5 j

! I# ?, h) b4 R        前边就是车间, 这里简直是太美了, 怪不得老线程总是唠叨着说:要是能一直待在这里就好了。
* R3 d: B; u' D+ L- k2 Z! g$ a" K6 |8 H
        这里空间大,视野好,空气清新,鸟语花香,还有很多从来没见过的人,像服务员一样等着为我服务。4 L. X3 K8 y) y9 g' y

# m5 y  ^( p. L) _0 I        他们也都有编号, 更重要的是每个人还有个标签,上面写着:硬盘,数据库,内存,网卡...  U, a4 s+ S8 T: z# U4 W3 `6 j
7 H, Q) e" I& z( b3 z
        我现在理解不了,看看操作步骤吧:
5 @- Z9 e- t% @" F) a! R; |# B" C% K
        第一步:从包裹中取出参数  ' x! c/ e7 F+ u" q1 T1 ]( J
1 W! X1 i8 g0 Z, i/ G7 k% x0 X- ?, N' g
        打开包裹, 里边有个Http Request  对象, 可以取到 userName, password两个参数。
# ^4 M9 F4 X* K& T  s6 B/ {" `! A0 U; k+ i: p! f
        第二步:执行登录操作
; z6 p0 x4 t4 w# ]1 h$ S" I" e, ^& {' @5 q0 _; \
        奥,原来是有人要登录啊,我把userName/password 交给数据库服务员,他拿着数据, 慢腾腾的走了。
* K; q( l# e, ]: K& m$ Q
4 w6 [) Q  y' @: w        他怎么这么慢? 不过我是不是正好可以在车间里多待一会儿? 反正也没法执行第三步。  f+ ?7 f2 V- B) b5 w+ ^. c3 d
8 p" K( r9 ^9 ^+ B! a) d
        就在这时,车间里的广播响了: 0 k) x* W" e& Y& [0 k& h

3 t, q5 g0 x' M6 ~- w        “0x4590,  我是CPU , 记住你正在执行的步骤, 马上带包裹离开”。& B9 w7 O) h" P% P* T
" {- q  C2 `) s
        我慢腾腾的开始收拾。3 t: \, n9 B4 c4 @; C

8 h4 S2 H! A" a' n! m  ~  b6 `        ”快点, 别的线程马上就要进来了“1 R1 e( M! }3 G" z
* W1 U# d1 E, ?$ [+ Y
        离开这个车间, 又来到一个大屋子,这里很多线程慢腾腾的在喝茶,打牌。7 p$ j) J9 Z& k' F( F3 _. y
5 g/ }3 p6 C& H4 g  V6 }! U- C) {
        ”哥们,你们没事干了?“% @; T0 m7 [  J6 O" t1 h
; \& ?2 |0 g3 ?! w8 b! ~& G( ]
        ”你新来的把, 你不知道我在等数据库服务员给我数据啊! ,据说他们比我们慢好几十万倍, 在这里好好歇吧“" C0 p- G7 O0 i* h4 d

& Q# D1 I* `6 J  i' s- r9 @  n5 X        ”啊? 这么慢?  我这里有人在登录系统, 能等这么长时间吗”
( }6 `8 J, N4 B* k  [1 y' a
" X1 {; ^& o; A3 d0 r        ”放心,你没听说过人间一天, CPU一年吗, 我们这里是用纳秒,毫秒计时的, 人间等待一秒,相当于我们好几天呢。“& K% }7 q3 j# w/ ~
) b; ^% C) |) j6 B; C( }
        干脆睡一会吧 , 不知道过了多久 ,大喇叭又开始广播了:
. N. K9 s5 B# a4 Q) @, U" R, X& R% y* l! n8 G* H  r+ ]
        “0x4590, 你的数据来了,快去执行”
. E3 k. g& S5 X3 u9 p2 m2 M. d: F$ \3 ^( R5 X
        我转身就往CPU车间跑,发现这里的们只出不进!) L0 @- p% W! i! c9 T; q3 g
5 n- x) ?+ ]  i4 }) ?8 c! ~% e
        后面传来阵阵哄笑声:/ @+ b  Q  T7 ]8 D6 T  r7 ~5 O

7 ~/ ^! D2 t& s) [7 T. ~        ”果然是新人, 不知道还得去就绪车间等。“
2 K/ z# m0 v3 @  I# G8 D. J1 @
5 F0 r7 h  ^6 C7 ]7 J1 h; x# H        于是赶紧到就绪车间, 这次没有那么好运了, 等了好久才被再次叫进CPU车间。
( I  Z: b3 w" B1 T% G
1 s$ e9 y7 f! V. ]* b0 L* P2 j3 j        在等待的时候, 我听见有人小声议论:
% z1 E; j! x6 W9 K, O8 y
; r9 B+ P& u6 Y3 S: C: w' Y        ”听说了吗,最近有个线程被kill掉了“
4 r( [( @- {- \8 Y! v" b1 |1 V. `0 K3 ]" q, U0 o& w
        ”为啥啊?“# e& R8 G) f2 S2 C
5 ]0 z: ?( j0 z" k2 }
        ”这家伙赖在CPU车间不走, 把CPU利用率一直搞成100%,后来就被kill掉了“$ Y' E" z* h; B( w% \9 f" J6 T

2 ^, G$ B1 o" s5 @; ?        ”Kill掉以后弄哪儿去了“
% X5 L. i4 J) y% w/ K: Q: X+ h' u
        ”可能被垃圾回收了吧“; N6 A  C: g" m7 a3 Z% I0 [3 S

8 ~- o2 Z& s! @6 K1 J9 o        我心里打了个寒噤 ,  赶紧接着处理, 收下的动作块多了,第二步登录成功了。
/ _# S) L1 q+ g7 P) F& C$ Y/ P- B% Q: n$ s* r% n
        第三步:构建登录成功后的主页
7 l& _$ ~% ~6 q2 O; u+ T$ e7 Q9 ~5 m) p8 O! r0 S
        这一步有点费时间, 因为有很多HTML需要处理, 不知道代码谁写的,处理起来很烦人。3 C& Q6 |' G( h9 N+ j) P
0 U( K" F+ R7 P: S
        我正在紧张的制作html呢, CPU又开始叫了:- j! Q9 q# C, m

4 y7 I) E$ u) P7 y9 y: K0 `7 c3 O2 U        “0x4590,  我是CPU , 记住你正在执行的步骤, 马上带包裹离开。”3 ]+ B) u" L  R& D4 M' ^* C1 \! w! j
) `* D/ R  S9 \3 f2 b# B. C
        ”为啥啊?“
3 C/ [% X; A' _& O0 D- _1 t3 X" ~; k
        ”每个线程只能在CPU上运行一段时间,到了时间就得让别人用了, 你去就绪车间待着, 等着叫你吧。“
) b4 v. R3 j3 M
, I9 T, [& W$ p! w8 o2 d        就这样, 我一直在就绪-运行 这两个状态,不知道轮转了多少次, 终于安装步骤清单把工作做完了。
" s: }3 L3 d) h3 u4 d% ~7 L& s9 y- y" g; ?* d8 l
        最后顺利的把包含html的包裹发了回去。( i" y& x; x$ Y' p
) Z4 E" M# J  t5 O! `
        至于登录以后干什么事儿 , 我就不管了。
: s1 K  e8 _) G* k4 c9 `" u
% Q8 y6 F; T( J' Z2 a; [        马上就要回到我那昏暗的房间了, 真有点舍不得这里。9 B0 N( U) X  L

. T  F1 z+ i$ w- y4 i3 v2 L1 K        不过相对于有些线程, 我还是幸运的, 他们运行完以后就彻底的销毁了,而我还活着 !
& c( t5 A' z8 [( {
#f182:
$ m6 s! m0 L# c4 Y# h3 g8 \
5 o/ I* K8 I3 s9 V" W+ l. Z5 w- J* ^( p
        回到了小黑屋, 老线程0x6900 问:& g# n* m% }! ?4 K! ]

( g* X+ A* N7 V( t0 Z2 E6 U        ”怎么样?第一天有什么感觉?“( f1 j6 k' H& a" i0 E

* L! H. o( i3 \  d' }+ {        ”我们的世界规则很复杂 , 首先你不知道什么时候会被挑中执行;  
" _% O3 a0 E& P: O        第二 ,在执行的过程中随时可能被打断,让出CPU车间;
8 H2 m% h4 a. V7 f" ~        第三,一旦出现硬盘,数据库这样耗时的操作也得让出CPU,去等待;  * o2 ?0 P* e( X& t* _
        第四,就是数据来了,你也不一定马上执行,还得等着CPU挑选。“
7 F6 o9 H6 }' }3 G; o  o$ w$ `/ w; P5 k. S1 r
        ”小伙子理解的不错啊“
- e: k& Q7 O: ?. t9 ^! e) s, Z0 S# m# Y$ X  K$ z, f& ~# t' {
        ”我不明白为什么很多线程都执行完就死了, 为什么咱们还活着?“  q# t: h. J4 c9 Z8 z

2 ^* S4 G8 V) b2 p        ”你还不知道, 长生不老是我们的特权, 我们这里有个正式的名称,叫做线程池!“
* _) H1 ^8 Y; l1 c) @$ {. z0 `. k4 A- [' X( E% T! T( s8 B6 Q
        平淡的日子就这么一天天过去, 作为一个线程, 我每天的生活都是取包裹,处理包裹,然后回到我们昏暗的家:线程池。+ u8 Q* S' W4 ?  |, n# I3 P* w

) L8 F8 e# Z" t0 t" @        有一天我回来的时候, 听到有个兄弟说, 今天要好好休息下,明天就是最疯狂的一天。+ P3 n$ z- Y  |6 Z
' J& Z0 T* z$ p8 O& V: w
        我看了一眼日历,明天是 11月11号 。
4 s8 U& D# [9 F% V& }- Y4 {8 Q
  x" u9 A2 n5 w$ n7 e9 V2 m! ?        果然,零点刚过,不知道那些人类怎么了, 疯狂的投递包裹, 为了应付蜂拥而至的海量包裹, 线程池里没有一个人能闲下来,全部出去处理包裹,CPU车间利用率超高,硬盘在嗡嗡转, 网卡疯狂的闪,  即便如此, 还是处理不完,堆积如山。% J2 P6 y/ b; L

; U  u  H. A- O4 Y9 D. `        我们也没有办法,实在是太多太多了, 这些包裹中大部分都是浏览页面,下订单,买,买,买。+ z7 f6 T* d( L% }5 R5 p/ |8 H' a9 L
- H+ D: u. J6 N+ o6 Z+ M
        不知道过了多久, 包裹山终于慢慢的消失了。
* [& z9 L; {# G9 e% A# U5 C
; q6 K0 f6 [  u$ W6 q3 u        终于能够喘口气, 我想我永远都不会忘记这一天。
: v1 e! ]4 h* ^& p/ y; L/ ^. s: O0 m: q# a8 I
        通过这个事件,我明白了我所处的世界:这是一个电子商务的网站!. L0 f" F' c; l9 u9 Z) g5 {& X
* u8 h3 I/ @8 V
        我每天的工作就是处理用户的登录,浏览, 购物车,下单,付款。
3 n4 E7 R' H- k; |( D' f" S, C4 n; R( u+ ~3 g
        我问线程池的元老0x6900 : ” 我们要工作到什么时候?”% M+ i5 e& i3 z8 i$ b. R6 p

- |4 S: [* j8 f        ” 要一直等到系统重启的那一刻”, 0x6900 说。
/ E8 D: [1 F3 \* G' ?3 h; g! w* e3 A* h4 C
        ” 那你经历过系统重启吗?”- G. g" {6 a( C1 x( \" E3 j
. [6 ^" o& P9 {0 Q5 T, V
        ” 怎么可能? , 系统重启就是我们的死亡时刻, 也就是世界末日,一旦重启, 整个线程池全部销毁,时间和空间全部消失,一切从头再来。”! P( {* u: R0 Y

% S% F7 D) |! V: F2 y' k2 ]        ” 那什么时候会重启?”  R* l8 b( M3 E" G* c* x1 J
$ G1 P6 Y4 b( w& P2 n) z$ j9 L( r
        ” 这就不好说了,好好享受眼前的生活吧…..”
+ t  w+ c9 W1 f
/ E$ A$ W$ {/ [        其实生活丰富多彩, 我最喜欢的包裹是上传图片,由于网络慢,所以能在就绪车间, CPU车间待很长很长时间,可以认识很多好玩的线程。
" C2 R% A, I9 d6 t! Y$ S7 P" s% l0 [# f7 ]/ K  \8 G$ e5 G4 [
        比如说上次认识了memecached 线程,他给我说通过他缓存了很多的用户数据, 还是分布式的! 很多机器上都有!
' i. {% P+ p1 z; [! a
, ~" n$ c7 Z8 U' K$ Z+ b        我说怪不得后来的登录操作快了那么多, 原来是不再从数据库取数据了你那里就有啊, 哎对了你是分布式的你去过别的机器没有?% _( y3 \  h  J: A1 U" L1 s7 u

' Q- E6 P% t& z        他说怎么可能我每次也只能通过网络往那个机器发送一个GET, PUT命令才存取数据而已, 别的一概不知。
$ K2 |# K" }1 @6 [3 [6 v1 F! M5 g) G" ~7 ~9 o
        再比如说上次在等待的时候遇到了数据库连接的线程, 我才知道它他那里也是一个连接池, 和我们线程池几乎一模一样。
/ n5 F+ z# o- w6 m5 o  w2 k, `. ~" p' l# C
        他说有些包裹太变态了,竟然查看一年的订单数据, 简直把我累死了。
. o. g$ v2 X1 s9 l
" T' b% m+ V: J7 t+ L        我说拉倒吧你, 你那是纯数据, 你把数据传给我以后,我还得组装成HTML,  工作量不知道比你大多少倍。$ _7 q# d6 D8 z  w1 r% b/ x5 u  M

$ ~) I) w' U/ k        他说一定你要和meme cache搞好关系,直接从他那儿拿数据,尽量少直接调用数据库, 我们JDBC connection也能活的轻松点。8 J) d8 P* U0 i: |! a

% t! X+ x' ?% {* q6 F* L        我说好啊好啊, 关键是你得提前把数据搞到缓存啊, 要不然我先问一遍缓存, 没有数据, 我这不还得找你吗?, c0 C9 B9 _9 A4 t" }2 C

3 a+ R; O3 Z" N" b) m2 C- K        生活就是这样, 如果你自己不找点乐子,还有什么意思?
- R7 @+ a/ k0 D' R4 F2 n, i, f# m- W! t6 i
        有一天我遇到一个可怕的事情, 差一点死在外边,回不了线程池了……/ N: ]* v. b9 D  O5 [

; R# K9 l" }) \! B; E8 P8 e5 v        其实这次遇险我应该能够预想到才对, 太大意了。
! w3 f$ P$ M' f9 z9 O4 \
#f182:

7 K% N4 U5 k% e2 E2 b) D0 C* o9 m
  D# j: P" w- A/ _! `7 Z2 n        前几天我处理过一些从http 发来的存款和取款的包裹, 老线程0x6900 特意嘱咐我:
$ Y8 |$ s8 Y- @- {4 F! R# y* [
0 l! ?! D4 k5 ?% q        “处理这些包裹的时候要特别小心, 你得一定要先获得一把锁, 在对账户存款或者取款的时候一定要把账户给锁住, 要不然别的线程就会在你等待的时候趁虚而入,搞破坏, 我年轻那会儿很毛糙,就捅了篓子”
* |2 r1 l# `4 y3 M3 ]! k' |. S( n  S+ O' B3 @9 V
        为了“恐吓”我, 好心的0x6900还给了我两个表格:
5 R8 d8 S0 K7 m& J" p3 U& V4 M' I! f/ a
        1、没有加锁的情况
% x2 j: t' R; V
3 C2 P4 J# d* v7 Z8 T0 t
一个线程的自白 QQ截图20160416102649.png
- O$ ~2 a: X5 Z: \  y+ L, I8 i

1 J; L) B9 `; _# @1 d% Y+ j  P; i        2、加锁的情况( n3 ]- |8 q( i( T! A9 x, r
9 N& r9 J, x% W; \/ v# X
一个线程的自白 QQ截图20160416102704.png
) ^- J! |. t! D: E

2 l' ?9 }- Q: K0 }        我看的胆颤心惊, 原来不加锁会带来这么严重的事故。
3 K6 P( k# E, n) M& R) S* w
3 Z+ F  `: V% K3 L        从此以后看到存款,取款的包裹就倍加小心, 还好,没有出过事故。/ N' M2 m3 r- B1 ]5 m/ ~* `) P  C
2 P* L5 e9 y, j; A+ D2 ?
        今天我收到的一个包裹是转账, 从某著名演员的账号给某著名导演赚钱, 具体是谁我就不透漏了, 数额可真是不小( x! b  l: b8 O( H
9 a; \0 r$ W" ?" l2 a( A7 T8 B
        我按照老线程的吩咐, 肯定要加锁啊, 先对著名演员账号加锁, 在对著名导演账号加锁。1 G# s. }. e9 q

+ r6 f+ `9 z$ [. q3 S# T        可我万万没想到的是, 还有一个线程,对,就是0x7954,  竟然同时在从这个导演到往这个演员转账。
5 B" A+ p5 T2 W1 F4 ^" |7 M$ T9 P* J: W( r
        于是乎,就出现了这么个情况:9 E/ N& ~  _" D

, V, K/ n) ?  R' x
一个线程的自白 QQ截图20160416102714.png
* K/ p# Q: u4 J' K/ B* g/ a5 C0 R+ {
$ _0 \' b6 x) t4 z& R
        刚开始我还不知道什么情况, 一直坐在等待车间傻等, 可是等的时间太长了, 长达几十秒 ! 我可从来没有经历过这样的事件。
& ~; c' e. b9 E3 T9 x+ \* E8 g$ p% ~# E% }& S
        这时候我就看到了线程0x7954 , 他悠闲的坐在那里喝咖啡, 我和他聊了起来:
* S" @' U- h, ^) v) f/ A/ l
# Q1 o, E& \% c% N        “哥们, 我看你已经喝了8杯咖啡了, 怎么还不去干活?”
& l9 I$ w: \4 z2 k4 r% U  S, @9 n6 \+ h& G  D1 b% p
        “你不喝了9杯茶了吗?” 0x7954 回敬到。
  ]3 `  d/ g: e( p$ _" y5 ^: V; j
        “我在等一个锁, 不知道哪个孙子一直不释放”
7 ^5 v& k) [8 C( h! h4 q
( P  n' K, ]1 m$ e: \( D1 u: g( B        “我也在等锁啊,我要是知道哪个孙子不释放锁我非揍死他不可 ” 0x7954 毫不示弱。
% P! C  X/ x& @$ I
" k+ V; L4 n& B9 ]) K! p        我偷偷的看了一眼, 这家伙怀里不就抱着我正在等的某导演的锁嘛?很明显, 0x7954 也发现了我正抱着他正在等待的锁。
4 Z9 N5 V" h+ C( h: y8 B+ s- m% r- g7 u
        很快我们两个就吵了起来, 互不相让:4 N, c& g1 }$ u) S
: H/ @. |4 A% N; @( E
        “把你的锁先给我, 让我先做完”8 b9 A% J. {; n5 Y4 Q

' ]& H' V# A  |% q* o        “不行, 从来都是做完工作才释放锁, 现在绝对不能给你”0 n% I: J, x3 }8 h$ B: w3 ~0 @

* U4 l1 W4 i" m! @; P/ M        从争吵到打起来, 就那么几秒钟的事儿。/ _, e, ^1 `7 w) N
8 T% ]4 g  Y! C$ _2 M" U
        更重要的是, 我们俩不仅仅持有这个著名导演和演员的锁, 还有很多其他的锁, 导致等待的线程越来越多, 围观的人们把屋子都挤满了。
% M. U1 @0 f5 @3 n3 n/ U0 q0 O* T- ?2 [* A# C
        最后事情真的闹大了, 我从来没见过终极大boss “操作系统” 也来了。大Boss毕竟是见多识广, 他看了一眼, 哼了一声 , 很不屑的说:9 ^9 T; y0 Q7 o% ]0 Z

6 B: ?/ @) c4 u! _  l! \        “又出现死锁了”
2 W) U0 q* o: a# B9 W4 I
0 t- j% x  g7 F! ]5 P9 ~        “你们俩要Kill掉一个, 来吧, 过来抽签。 ”3 e: E7 Q9 e* [5 J
2 `. Z+ X) n0 M" v2 ~
        这一下子把我给吓尿了, 这么严重啊!: [" K% e3 b+ X1 O' ]

6 j  R4 C+ ~9 C3 Q0 w        我战战兢兢的抽了签,打开一看, 是个”活”字。' z: j. U! _8 L7 i0 g! @# P
1 d; s% j2 }+ K
        唉,小命终于保住了。4 p: Q/ d0 ?& l! Q% O, c

( k2 M6 B1 i& o1 s        可怜的0x7954 被迫交出了所有的资源以后, 很不幸的被kill掉, 消失了。我拿到了导演的锁, 可以开始干活了。; H& t+ z& y/ m# i0 X, t2 f" x1 H2 U
* z% b* M' I/ k) b, B
        大Boss操作系统如一阵风似的消失了, 身后只传来他的声音:* e7 T- T% C  F* |, i2 }4 g: I
7 y. Z7 p- h7 q& o" C. n' s
        “记住, 我们这里导演>演员,  无论认识情况都要先获得导演的锁。”
& w( Z4 i* N$ }8 R2 c* z$ c8 }; C% P8 x6 {% x) T
        由于不仅仅是只有导演和演员, 还有很多其他人, Boss留下了一个表格,  里边是个算法, 用来计算资源的大小, 计算出来以后,永远按照从大到小的方式来获得锁:
2 S- n3 _! t( d, q9 q1 M$ Y: }* t# l, P* g# f' O% h, x( h
一个线程的自白 QQ截图20160416102726.png
0 T) ?6 ^  |4 P; w3 a5 D

$ B  T* ~( R- o  W$ G
& Y1 a$ l# {2 I5 \        我回到线程池, 大家都知道了我的历险, 围着我问个不停。1 d% K- W3 x  C2 @
7 ]8 }( ^, G4 G' @) s8 c, _4 `$ [
        凶神恶煞的线程调度员把大Boss的算法贴到了墙上。#j339:
: Z! E4 D7 _; C5 _9 r$ a, w. M/ H
        每天早上, 我们都得像无节操的房屋中介, 美容美发店的服务员一样, 站在门口,像被耍猴一样大声背诵:
( J8 f0 S, E5 b' E( [; B
9 [) B1 Y. B8 P) L) h        “多个资源加锁要牢记, 一定要按Boss的算法比大小, 然后从最大的开始加锁”.........
  r  n8 V; l- W5 M. C5 J, I) }: q
( ]( q, I- A/ |  \        又过了很多天, 我和其他线程们发现了一个奇怪的事情:包裹的处理越来越简单。不管任何包裹,不管是登录, 浏览,存钱….. 处理的步骤都是一样的, 返回一个固定的html页面。
" v* V. k. x, b+ P0 u, y6 ]6 b
. q# j7 }% G% C' Z& l        有一次我偷偷的看了一眼, 上面写着:
) j3 l/ D. }) r5 A# I: Q, j+ ~
& o) g4 K' \. @# y7 _% \2 M        “本系统将于今晚 00:00 至4:00 进行维护升级, 给你带来的不便我们深感抱歉。”$ `8 P, |* u9 l

8 X/ f: ]/ d( t, [- a/ r8 w- B+ u        我去告诉了老线程0x6904,  他叹了一口气说:
: y) W: R* n  J- }' S
# F1 x7 @- t9 X6 g& \- r        “唉, 我们的生命也到头了, 看来马上就要重启系统, 我们就要消失了, 再见吧兄弟。”{:4_86:}
$ I4 {, i5 Y& Z; @! C) m4 W9 }$ @! z; a; `& K
        系统重启的那一刻终于到来了。我看到屋子里的东西一个个的不见了, 等待车间,就绪车间,甚至CPU车间都慢慢的消失了。我身边的线程兄弟也越来越少, 最后只剩我自己了。
8 d2 p2 r1 _/ O+ V$ m' j
* s  ?4 w2 s. ^7 t! I6 d) I        我在空旷的原野上大喊: 还有人吗?
/ N5 r( r$ Y5 m+ \7 S' k
! w( y4 t; v% j1 P' v        无人应答。
! k% W6 a$ C+ _. {: x' C! K3 g4 u" v' d. P
        我们这一代线程池完成了使命,下一代线程池将很快重生。
; u! L2 k6 o7 f5 w, f0 O  e% P" T* t/ K. f& m
上一篇
下一篇


soarcloud 「龙战于野」 2016-4-18 09:26 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

很有意思的描述
噬影无痕 「锋芒初露」 2016-4-21 00:18 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

能力有限,一知半解,还待深入了解!#j343:这是第二遍观看#j318:
噬影无痕在网吧通宵,花了 1 个 金币.
也生 「初入古黑」 2016-6-7 15:21 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

虽然看不太懂,但是觉得你很生动
糟糕!也生长得太帅路遇劫匪,赎金 2 个 金币.
微雨黄昏 「出类拔萃」 2018-5-5 09:32 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

专业抢沙发的!哈哈
映画 「出类拔萃」 2018-5-5 12:02 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

珍爱生命,果断回帖。
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

关于本站|大事记|小黑屋|古黑论 网站统计

GMT+8, 2021-12-1 04:42 , Processed in 0.042044 second(s), 24 queries , Redis On.

© 2015-2021 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表