我并不羡慕别人的人生,这就是所谓幸福。 收藏本站
登陆 / 注册 搜索

阅读: 14.6K   回复: 5

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

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

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

主题破百
      线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。8 Q; e, p+ g' U- r
) l8 a/ r" {# \8 B  ~
一个线程的自白 160cpu.jpg
- b7 m9 p/ ?1 @8 _# T
. _" v4 e- S. _$ E
        我是一个线程, 我一出生就被编了个号: 0x4590,  然后被领到一个昏暗的屋子里,  这里我发现了很多和我一模一样的同伴。我身边的同伴0x6900 待的时间比较长, 他带着沧桑的口气对我说:4 U/ I* l; D! L6 I+ \1 `# D
1 {$ L7 @, l0 U7 \3 X) V& v
        “我们线程的宿命就是处理包裹。 把包裹处理完以后还得马上回到这里,否则可能永远回不来了。”
5 m* e; \& c: Q0 M  A: G
. Y& @$ s1 M9 k6 E% C7 C. }; Y        我一脸懵懂,包裹,什么包裹?: ]0 _' N5 x& x( c4 X8 v$ \
: q6 Q( n# P' F, E
        ”不要着急,马上你就会明白了, 我们这里是不养闲人的。“
8 [6 ^4 I- o: I7 y$ o- R( G7 Q! x+ }/ Z* d! z8 b4 T
        果然,没多久,屋子的门开了, 一个面貌凶恶的家伙吼道:" |9 k( K7 O  `$ O
; t% e2 B# k$ ~: I, r7 f
        "0x4590 ,出来!"9 i1 x0 R& y/ q; y. [* M$ i9 v  i
- J5 q9 r, R6 Y( Z, k
        我一出来就被塞了一个沉甸甸的包裹,上面还有附带着一个写满了操作步骤的纸。( d( d. F. a2 S& c% a0 s, x" w
2 l/ f, M; E9 e# c8 r8 {
        "快去,把这个包裹处理了。"
- C! U' A+ P8 T$ k0 i: \
  `" C) a' ]2 Q        "去哪儿处理"
- n, G2 }; I# z6 u  c8 b3 E1 l$ H* `* }
        "跟着指示走, 先到就绪车间"' @/ c& O7 Y# n4 Y) q2 i  q" y

* Q* {6 e- }; M0 \        果然,地上有指示箭头,跟着它来到了一间明亮的大屋子,这里已经有不少线程了, 大家都很紧张,好像时刻准备着往前冲。1 x$ ]2 Z& c  Y; j
* Q- \8 @" A7 G- T6 v
        我刚一进来,就听见广播说:“0x4590, 进入车间”+ J0 X, h+ V7 s. H
0 e8 U% b, @) {- X
        我赶紧往前走, 身后很多人议论说:  Z5 j4 Q) X' k2 Z' [

+ U3 L: C. Y' n3 g. {; W3 h' Z        ”他太幸运了, 刚进入就绪状态就能运行“
$ @" c4 ~: M( z+ Q6 b8 Q. N, d
" W4 C- W  C+ p) S* o* G8 ~        ”是不是有关系?“
3 ~" I, m& d5 x' E9 ^0 w/ F" X
2 G' u$ z4 T- b+ ]9 |        ”不是,你看人家的优先级多高啊, 唉“
& ?7 h2 _( w- i, V& v1 B
0 }4 s5 T0 L' f, ?2 j0 g- H( z        前边就是车间, 这里简直是太美了, 怪不得老线程总是唠叨着说:要是能一直待在这里就好了。4 v, `+ v3 f$ u
5 W) g2 m- @9 f8 M4 M2 o" q5 }$ |
        这里空间大,视野好,空气清新,鸟语花香,还有很多从来没见过的人,像服务员一样等着为我服务。+ V5 i3 V, x3 K0 [8 [

8 [) v2 a7 ^4 h, I; L        他们也都有编号, 更重要的是每个人还有个标签,上面写着:硬盘,数据库,内存,网卡...9 _# }  W( ]3 m! b( L# J; Z

# P' F3 {% X3 _% u        我现在理解不了,看看操作步骤吧:
9 \# \/ q, ^) V. _; N
3 A) k" |7 f' _( N- \) c* l        第一步:从包裹中取出参数  $ e) G. L5 |$ |& D/ u

; p& m* a7 w, t1 Y        打开包裹, 里边有个Http Request  对象, 可以取到 userName, password两个参数。9 y) `5 F$ W2 D6 k/ x

; A* I4 p# J8 V. I- I! B        第二步:执行登录操作. H' S) k& B" h# \, m* J
; B9 f: ]7 a+ {3 p
        奥,原来是有人要登录啊,我把userName/password 交给数据库服务员,他拿着数据, 慢腾腾的走了。
- ~) r  L- v  {: b  P
$ T( f' c. b3 f8 ]  `2 A1 Z        他怎么这么慢? 不过我是不是正好可以在车间里多待一会儿? 反正也没法执行第三步。
1 @2 h; c# k  m. h
5 f. S  g2 ?4 C8 p7 Y3 u4 c- K' I        就在这时,车间里的广播响了: 
6 }: R$ h* F9 D: r) ~6 r, K7 C2 |0 C8 `9 P
        “0x4590,  我是CPU , 记住你正在执行的步骤, 马上带包裹离开”。
  s; K9 h; h" q* T. C5 L$ O9 o' n* g. H) X/ @3 o6 D) t) A4 ]
        我慢腾腾的开始收拾。8 _, [4 ?* d* |+ t
2 {; x4 R6 I$ [3 ~
        ”快点, 别的线程马上就要进来了“
5 t# A, @8 d9 R# E6 h# m3 O  m  B* X& u% }2 W
        离开这个车间, 又来到一个大屋子,这里很多线程慢腾腾的在喝茶,打牌。# e4 k; q6 e, Y: Q8 N

; k8 o, E8 q: S0 s0 o        ”哥们,你们没事干了?“
' R' `6 N9 p, l* J' z3 x$ p; |' r" x2 Y4 `$ n8 K  q
        ”你新来的把, 你不知道我在等数据库服务员给我数据啊! ,据说他们比我们慢好几十万倍, 在这里好好歇吧“' A& l; X( n/ U  U* E

9 q' {/ @) c9 H$ ?$ I7 |        ”啊? 这么慢?  我这里有人在登录系统, 能等这么长时间吗”0 B7 h( b  u# |8 D
" M. u' Z& r! s# z- X; Z$ T, v# l
        ”放心,你没听说过人间一天, CPU一年吗, 我们这里是用纳秒,毫秒计时的, 人间等待一秒,相当于我们好几天呢。“+ l: ^, R/ Z' l7 X2 y! S
0 N; o7 r; d& Z# h% \7 u4 l5 w
        干脆睡一会吧 , 不知道过了多久 ,大喇叭又开始广播了:
  @# C" m' ~2 _  z; v6 E5 h
7 ^; Z/ S/ Q! b9 U        “0x4590, 你的数据来了,快去执行”* {, y# u- e% D
5 K8 _4 x4 N( I$ X5 o2 Y* d
        我转身就往CPU车间跑,发现这里的们只出不进!4 w$ u; a/ l1 A" k+ G

( p$ L/ X4 j9 c+ f7 o, H' J# R        后面传来阵阵哄笑声:
$ w2 v# U" u/ U" t; z) l# ^$ E. r- ?1 l4 e& P6 c! t
        ”果然是新人, 不知道还得去就绪车间等。“
1 P% B, Q" a; S9 I; N( z: X8 t* _3 y7 H
        于是赶紧到就绪车间, 这次没有那么好运了, 等了好久才被再次叫进CPU车间。+ q0 n- P1 ^* Z9 ]$ X$ j
9 n# p/ o8 E' U
        在等待的时候, 我听见有人小声议论:" G$ C4 i, g! S* u$ t# c
* ^' E, E% ^: N8 o  Q
        ”听说了吗,最近有个线程被kill掉了“5 b  L0 R9 g3 f! `+ v

- T  E/ {/ m6 J- G8 k  h! i        ”为啥啊?“
: Q/ J8 P& ?  Y1 a6 Z- S+ a* K: g$ q" ]* X! {8 v
        ”这家伙赖在CPU车间不走, 把CPU利用率一直搞成100%,后来就被kill掉了“% Y4 g1 C6 A) ~: q- J3 c

7 a( Z; I  g* U6 E. @0 c3 f        ”Kill掉以后弄哪儿去了“# g+ {; y  G. @! Q/ t; p3 r
& o2 U7 P# N+ Z
        ”可能被垃圾回收了吧“0 r3 |% n6 I! X

5 t( @9 Z. s+ G7 z; _        我心里打了个寒噤 ,  赶紧接着处理, 收下的动作块多了,第二步登录成功了。1 p7 Q9 r  C9 r. ?/ ]& N

& K! S9 s* A' b( Z% P; |; H' l1 i1 @        第三步:构建登录成功后的主页
& p, Q$ W3 E# H1 M/ L. l5 ]
( N6 A6 r$ N2 {- \        这一步有点费时间, 因为有很多HTML需要处理, 不知道代码谁写的,处理起来很烦人。
! O' h  W4 s2 B0 d6 n! D# ?
( W4 v) m2 O' b4 s        我正在紧张的制作html呢, CPU又开始叫了:
& I& y& ?8 {0 @. Q/ F  t  T0 u7 W1 \  i! ?" v% w+ C
        “0x4590,  我是CPU , 记住你正在执行的步骤, 马上带包裹离开。”
) w9 Y1 S* p# _" e0 I0 U% q% d- i
        ”为啥啊?“
6 Q. M+ I6 s, w1 p( n
1 Y7 ^1 Z7 \8 N4 g8 p        ”每个线程只能在CPU上运行一段时间,到了时间就得让别人用了, 你去就绪车间待着, 等着叫你吧。“
; h, t% p" f, |, _7 f4 X
. O7 q" k$ [) o; ]        就这样, 我一直在就绪-运行 这两个状态,不知道轮转了多少次, 终于安装步骤清单把工作做完了。- n; F# |3 p) O1 F5 g  M

/ u, f6 s2 {2 l/ C( \  |3 \! o        最后顺利的把包含html的包裹发了回去。
7 P, _' _: J( O/ E$ L+ z: S- {
3 b( l2 r, y5 k! b5 y- x        至于登录以后干什么事儿 , 我就不管了。& ^- z) j' a: ^4 T5 ^
/ m' S3 P! w5 E# z/ m
        马上就要回到我那昏暗的房间了, 真有点舍不得这里。
) {# e- p; T8 Q# W: S  c' u: D  d% ^" `$ Q7 i- ]0 c: O5 s) q1 }
        不过相对于有些线程, 我还是幸运的, 他们运行完以后就彻底的销毁了,而我还活着 !% Z+ s- f7 _, G2 q. Q. M8 \- x; G
#f182:

8 }' w$ P: X+ X2 m+ L3 M
' @$ v: Y1 @- a* p% c$ V( x9 u        回到了小黑屋, 老线程0x6900 问:
5 t$ m! j7 t% ^
  e$ W% M: Z! ^6 f. D  p: S7 _8 R        ”怎么样?第一天有什么感觉?“4 ]) _& k0 v. U( }8 w3 z; B8 ^
* ~+ U- |0 f2 y8 x( v% q! c: G
        ”我们的世界规则很复杂 , 首先你不知道什么时候会被挑中执行;  + X- [) F6 o9 |1 u' z1 h
        第二 ,在执行的过程中随时可能被打断,让出CPU车间;" K7 m( H) ^2 T/ C8 a
        第三,一旦出现硬盘,数据库这样耗时的操作也得让出CPU,去等待;  
5 s8 b4 Q7 J! W' ~, I0 P        第四,就是数据来了,你也不一定马上执行,还得等着CPU挑选。“
5 ]8 P# @# h' K, w! g7 d8 M
' z5 j0 z3 K* H3 m9 p6 I6 D* o$ g        ”小伙子理解的不错啊“
5 u- [, r) ~1 G' R
) U2 ]# Q. g, G* a2 s        ”我不明白为什么很多线程都执行完就死了, 为什么咱们还活着?“
7 W) J# t$ A' B2 U# }# v* K& J8 @2 A1 N) c/ o: R" J6 e4 U- {: ^
        ”你还不知道, 长生不老是我们的特权, 我们这里有个正式的名称,叫做线程池!“  D) o2 V5 }8 A

1 N" Y: y! E/ E  m7 b' t' p( Z        平淡的日子就这么一天天过去, 作为一个线程, 我每天的生活都是取包裹,处理包裹,然后回到我们昏暗的家:线程池。+ V8 t  I: t, O' F0 `* k) z/ ]& q

8 @! W7 E- v# d. [8 M8 i3 w* H        有一天我回来的时候, 听到有个兄弟说, 今天要好好休息下,明天就是最疯狂的一天。# I0 {4 C7 d- u) x
6 H5 E: W; u. a. o
        我看了一眼日历,明天是 11月11号 。
5 c0 O6 G5 V3 e) C7 o" H: O, j0 ]/ k
        果然,零点刚过,不知道那些人类怎么了, 疯狂的投递包裹, 为了应付蜂拥而至的海量包裹, 线程池里没有一个人能闲下来,全部出去处理包裹,CPU车间利用率超高,硬盘在嗡嗡转, 网卡疯狂的闪,  即便如此, 还是处理不完,堆积如山。
- ~' B9 y, ~6 A; U! Y
, F  s9 b0 M* W" W        我们也没有办法,实在是太多太多了, 这些包裹中大部分都是浏览页面,下订单,买,买,买。
, U4 I* J! @5 F3 ]
- {  S: E  @; }# R& Z0 }        不知道过了多久, 包裹山终于慢慢的消失了。
/ o# ^  O# F$ w. G0 Z5 J0 c) a) I9 R6 u, Z1 \
        终于能够喘口气, 我想我永远都不会忘记这一天。$ T4 i# s/ j( r1 f$ }3 Z

5 L; E1 A% u2 a        通过这个事件,我明白了我所处的世界:这是一个电子商务的网站!, ]' |7 w, B1 v3 c  ^7 o( A
: y8 {# ?0 `4 y& b
        我每天的工作就是处理用户的登录,浏览, 购物车,下单,付款。
) l/ A8 l+ [% `2 ?, E3 K7 I4 g: i& d6 a4 m9 [, c2 a' ]
        我问线程池的元老0x6900 : ” 我们要工作到什么时候?”1 |9 Z4 j0 R  L' v; _. \! A" w$ `- p
5 ?1 J' V: ]1 I9 B. Q( O' j' W) H1 Q
        ” 要一直等到系统重启的那一刻”, 0x6900 说。5 x" }5 G, N: Q8 k# ~3 d  ?

+ B3 \5 g+ D- N: z' j$ z        ” 那你经历过系统重启吗?”
8 K, t* U% C% N6 P9 W$ h3 L3 G% j7 o/ O. M0 k. G
        ” 怎么可能? , 系统重启就是我们的死亡时刻, 也就是世界末日,一旦重启, 整个线程池全部销毁,时间和空间全部消失,一切从头再来。”- D( s* v+ F9 i
% x! j+ M" s4 ~! Y
        ” 那什么时候会重启?”, S3 ?& G' c" K) n" d' X
5 o5 R3 Y! [8 Z" }% p! B
        ” 这就不好说了,好好享受眼前的生活吧…..”
  A/ S1 d* q7 v+ i
4 H( f9 R; b: s$ b  E        其实生活丰富多彩, 我最喜欢的包裹是上传图片,由于网络慢,所以能在就绪车间, CPU车间待很长很长时间,可以认识很多好玩的线程。) g4 z& k! \$ W8 W9 L0 J

6 W0 F( h; J1 F3 f        比如说上次认识了memecached 线程,他给我说通过他缓存了很多的用户数据, 还是分布式的! 很多机器上都有!
, p" y: b  ]! g) A. s' p. t/ K$ ^- U* G, Z
        我说怪不得后来的登录操作快了那么多, 原来是不再从数据库取数据了你那里就有啊, 哎对了你是分布式的你去过别的机器没有?, H$ R# |; x9 O7 p% m
/ H4 @, ^' t2 `( y8 T' N4 K
        他说怎么可能我每次也只能通过网络往那个机器发送一个GET, PUT命令才存取数据而已, 别的一概不知。/ W) m! k4 V: \9 }" `

! k+ c, [4 k* V6 h        再比如说上次在等待的时候遇到了数据库连接的线程, 我才知道它他那里也是一个连接池, 和我们线程池几乎一模一样。* @  P- U8 A! ]& O* z7 V
2 Z$ N/ q9 r1 H
        他说有些包裹太变态了,竟然查看一年的订单数据, 简直把我累死了。
( x- g% L% J5 W/ q4 p/ T( R' i: R. ]& b
        我说拉倒吧你, 你那是纯数据, 你把数据传给我以后,我还得组装成HTML,  工作量不知道比你大多少倍。
  B- I9 ~* G, F0 e
* g/ ?) I3 R- a3 r' r        他说一定你要和meme cache搞好关系,直接从他那儿拿数据,尽量少直接调用数据库, 我们JDBC connection也能活的轻松点。
' j4 c" G2 [6 e+ r1 v2 r2 I" D" z
5 \" e0 n0 s- Q4 i        我说好啊好啊, 关键是你得提前把数据搞到缓存啊, 要不然我先问一遍缓存, 没有数据, 我这不还得找你吗?
6 P. u+ K) D  Y: p
9 \% I) K& f; b% v, y        生活就是这样, 如果你自己不找点乐子,还有什么意思?, v8 x9 }1 Y! o! g0 v- [/ J4 f

2 H9 I& l4 Z0 G/ e6 F        有一天我遇到一个可怕的事情, 差一点死在外边,回不了线程池了……5 H# C* ^' `( M$ q! n) y
9 ~! O7 g' ]3 |' V, c2 U2 f$ u
        其实这次遇险我应该能够预想到才对, 太大意了。
2 t, T, y! ?. c2 I4 K9 p
#f182:
9 N; Y% R$ X# L7 w

* h! n3 H: X2 P, G' A3 u% T0 v        前几天我处理过一些从http 发来的存款和取款的包裹, 老线程0x6900 特意嘱咐我:
4 f. u6 {0 c3 s+ j! @7 s4 a7 A* |; |/ Q0 Y" r3 K
        “处理这些包裹的时候要特别小心, 你得一定要先获得一把锁, 在对账户存款或者取款的时候一定要把账户给锁住, 要不然别的线程就会在你等待的时候趁虚而入,搞破坏, 我年轻那会儿很毛糙,就捅了篓子”
* t$ P8 X5 `( K0 r; o* Z0 O
; V; V) I& a7 I$ ^4 ^4 }        为了“恐吓”我, 好心的0x6900还给了我两个表格:
% Y. B" ~% I2 ~1 b  T( M
  o2 c5 t8 {- r$ {/ i/ h" b        1、没有加锁的情况
& R! R& |* {, P2 V+ v/ k4 g8 X/ ]8 q8 E& D) h: R
一个线程的自白 QQ截图20160416102649.png

" x0 B/ s- q9 B# n* u, y/ R. o& @/ C% ~* i, J( h- r! X
        2、加锁的情况& D- _7 _0 v3 d$ d3 `8 {0 _' c

1 ]6 m- A: O+ w0 U3 @/ f+ p5 D
一个线程的自白 QQ截图20160416102704.png

7 l& a5 f0 U* [5 E" h
4 b2 a0 p7 c2 a        我看的胆颤心惊, 原来不加锁会带来这么严重的事故。$ l- _4 K! h" L: r/ ~7 S! m7 w

/ D# `- B; m& i9 E2 T  d3 t        从此以后看到存款,取款的包裹就倍加小心, 还好,没有出过事故。( E7 s8 M( u, q$ D

  ^1 G4 E! C+ w& m& I( |* W/ y        今天我收到的一个包裹是转账, 从某著名演员的账号给某著名导演赚钱, 具体是谁我就不透漏了, 数额可真是不小
, m9 Q# h$ p- c) u- k( ~3 [6 @2 `! ]3 w, L0 M1 k( ?
        我按照老线程的吩咐, 肯定要加锁啊, 先对著名演员账号加锁, 在对著名导演账号加锁。1 W/ |6 T/ J1 A! S+ \9 C
: ^' H, C& B: v+ p1 h
        可我万万没想到的是, 还有一个线程,对,就是0x7954,  竟然同时在从这个导演到往这个演员转账。5 M' H' B9 @0 Q, N# f0 k5 i3 `+ X

% W  U6 v& _3 K8 _* e  G; v        于是乎,就出现了这么个情况:3 r$ t3 T  ^$ M  a

( k$ d2 H& k0 c3 A
一个线程的自白 QQ截图20160416102714.png
& X5 N* \1 _; J; O' G5 w

1 @, q; c1 {" E7 U7 a' Y        刚开始我还不知道什么情况, 一直坐在等待车间傻等, 可是等的时间太长了, 长达几十秒 ! 我可从来没有经历过这样的事件。: V( d8 F2 B, ^8 H
% n) E" S9 P4 W$ m0 [( C1 w$ t
        这时候我就看到了线程0x7954 , 他悠闲的坐在那里喝咖啡, 我和他聊了起来:
% U/ X9 p6 ^/ b0 V- k/ h, p$ j! d5 e! {; U4 |& u
        “哥们, 我看你已经喝了8杯咖啡了, 怎么还不去干活?”
1 b  I- g% Q  B; S  o  m4 B' I/ W+ @6 p4 K# X5 ~% a
        “你不喝了9杯茶了吗?” 0x7954 回敬到。. j- r0 O9 |5 M0 c  W
) U7 R  S- L: b0 a( W. e
        “我在等一个锁, 不知道哪个孙子一直不释放”* E/ E% m9 H4 N, V; a4 u
9 ~* I$ i2 k: I
        “我也在等锁啊,我要是知道哪个孙子不释放锁我非揍死他不可 ” 0x7954 毫不示弱。, \0 ~( D1 \9 |

! E: O6 Q8 U: O. Y& z. o        我偷偷的看了一眼, 这家伙怀里不就抱着我正在等的某导演的锁嘛?很明显, 0x7954 也发现了我正抱着他正在等待的锁。+ {$ I5 f1 _. x5 i
. p9 |* d( U7 w" u* P5 |
        很快我们两个就吵了起来, 互不相让:. J* h$ ~+ G- O1 u- {
8 T$ x* s: `- k( E* y5 A
        “把你的锁先给我, 让我先做完”" }$ P2 L1 h4 |9 x" ^

% v7 K9 l" T/ W        “不行, 从来都是做完工作才释放锁, 现在绝对不能给你”
: ?8 N8 ^6 g" |/ x6 p/ a1 ?& u' O1 j# A! i: `- U
        从争吵到打起来, 就那么几秒钟的事儿。3 C  M6 W: O; u$ K- m% w" o3 n

! F' @- y0 m5 T, L7 r& N8 l/ v. o        更重要的是, 我们俩不仅仅持有这个著名导演和演员的锁, 还有很多其他的锁, 导致等待的线程越来越多, 围观的人们把屋子都挤满了。
. l% N7 s3 ~( k! a/ K8 j7 K$ N9 f/ @) L+ `9 A! `3 a! {
        最后事情真的闹大了, 我从来没见过终极大boss “操作系统” 也来了。大Boss毕竟是见多识广, 他看了一眼, 哼了一声 , 很不屑的说:
7 w$ D0 t/ B* y. I% x4 ~, Z/ J
0 r4 B' K8 v, Y0 ]0 i        “又出现死锁了”. c4 K' m( r: o3 t, A# @
% V; _' ]8 X, l! y. T! Q
        “你们俩要Kill掉一个, 来吧, 过来抽签。 ”0 o3 S- U6 e( T( m, r( r" W4 w" u
" j/ _/ L0 C# T, C
        这一下子把我给吓尿了, 这么严重啊!) c& [* P& X! A  x. j
+ h. I) k1 C/ e( [
        我战战兢兢的抽了签,打开一看, 是个”活”字。
4 e( {$ L/ t& e. g; Z& k/ _% e3 l0 Y, a# ~$ g( P2 s6 M
        唉,小命终于保住了。
* X, f, y6 b) `3 x7 F
' `6 w$ B) f9 Q9 f, @3 F        可怜的0x7954 被迫交出了所有的资源以后, 很不幸的被kill掉, 消失了。我拿到了导演的锁, 可以开始干活了。
) g( ^" S# H' S: T8 @) @6 u2 r
; n+ j2 I9 N3 r+ V4 d2 e9 i3 r' d        大Boss操作系统如一阵风似的消失了, 身后只传来他的声音:
; V3 {7 @) X. I* U1 d
4 L, G3 E, o( m2 I, a; a. V        “记住, 我们这里导演>演员,  无论认识情况都要先获得导演的锁。”6 z5 P7 w; e) a, `

3 I( L/ m: ]) ~2 s6 L        由于不仅仅是只有导演和演员, 还有很多其他人, Boss留下了一个表格,  里边是个算法, 用来计算资源的大小, 计算出来以后,永远按照从大到小的方式来获得锁:& `  x) C8 K1 N* w2 D, z% e

& m+ d' z) O3 ~( @- @
一个线程的自白 QQ截图20160416102726.png
  L" ]2 E, h8 J: D* x0 G- g

* C: u. v( |/ I' L2 a( P4 ?
, W4 E5 J# z: H0 Z# j' X1 v        我回到线程池, 大家都知道了我的历险, 围着我问个不停。4 [' s+ V' P) M! L' k6 \

8 `( t' |$ t- t/ U$ {        凶神恶煞的线程调度员把大Boss的算法贴到了墙上。#j339:2 M1 H# G! g0 p5 K' I" ?2 @

8 d4 |% Q2 G! J' D/ c9 L; G        每天早上, 我们都得像无节操的房屋中介, 美容美发店的服务员一样, 站在门口,像被耍猴一样大声背诵:
; q0 O' z- l4 f3 S8 U& [1 r* Y) j/ x, O3 v% r; ]$ l4 e
        “多个资源加锁要牢记, 一定要按Boss的算法比大小, 然后从最大的开始加锁”.........
& {# [+ [( w; @1 R+ l8 }9 {( H
3 v# N0 ^% P  f: d1 Y7 z. T        又过了很多天, 我和其他线程们发现了一个奇怪的事情:包裹的处理越来越简单。不管任何包裹,不管是登录, 浏览,存钱….. 处理的步骤都是一样的, 返回一个固定的html页面。
5 M3 T" N7 o# G. I( C1 V7 L
& i: Q/ F2 t/ V" L! q" s2 H$ g        有一次我偷偷的看了一眼, 上面写着:- _% F3 x+ {0 o
6 d# `0 X$ [, b. W
        “本系统将于今晚 00:00 至4:00 进行维护升级, 给你带来的不便我们深感抱歉。”
# E6 W: p  }; J3 Z4 k" g) H! F0 J
+ {( I% x0 a" r, Q6 V        我去告诉了老线程0x6904,  他叹了一口气说:
0 S! m: `! I' s0 m; l6 \0 ?1 K- G
; Y; v( y3 V1 b4 n0 w" q- Y/ q) J        “唉, 我们的生命也到头了, 看来马上就要重启系统, 我们就要消失了, 再见吧兄弟。”{:4_86:}
' s, _6 l' L1 G) r9 O' F2 l; L: [& R% W/ ]6 H: {6 D! g
        系统重启的那一刻终于到来了。我看到屋子里的东西一个个的不见了, 等待车间,就绪车间,甚至CPU车间都慢慢的消失了。我身边的线程兄弟也越来越少, 最后只剩我自己了。
4 d; R; p+ s1 ~% y$ [' O: ^. r- Q6 A& H8 X" C& X3 H
        我在空旷的原野上大喊: 还有人吗?
& [- b9 Z' f% Y1 U. X
& n- S  H; l& b0 }0 ?8 I        无人应答。
& i' O8 \. L1 B. ?0 z9 b1 F- [* l; _5 V- H
        我们这一代线程池完成了使命,下一代线程池将很快重生。
! m$ o# @2 |, r% S3 N. w' H1 U& r, E" j! g/ W
上一篇
下一篇


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-5-12 18:38 , Processed in 0.034117 second(s), 22 queries , Redis On.

© 2015-2021 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表