W. Richard Stevens UNIX Sockets API echo Sockets TCP OOB IO C struct C/C++ UNIX fork() select(2)/poll(2)/epoll(4) IO IO CPU 100% libevent UNIX CPU IO

Similar documents
智力测试故事

I. 1-2 II. 3 III. 4 IV. 5 V. 5 VI. 5 VII. 5 VIII. 6-9 IX. 9 X XI XII. 12 XIII. 13 XIV XV XVI. 16

30,000,000 75,000,000 75,000, (i) (ii) (iii) (iv)

奇闻怪录

Microsoft Word - John_Ch_1202

全唐诗50

施 的 年 度 維 修 工 程 已 於 4 月 15 日 完 成, 並 於 4 月 16 日 重 新 開 放 給 市 民 使 用 ii. 天 水 圍 游 泳 池 的 年 度 維 修 工 程 已 於 3 月 31 日 完 成, 並 於 4 月 1 日 重 新 開 放 給 市 民 使 用 iii. 元

2015年廉政公署民意調查

Microsoft Word - COC HKROO App I _Chi_ Jan2012.doc


-i-

Microsoft Word - 强迫性活动一览表.docx

<D6D0B9FAB9C5CAB757512E6D7073>

对联故事

RDEC-RES

(譯本)

(b)

我国服装行业企业社会责任问题的探讨.pages

Microsoft Word - Entry-Level Occupational Competencies for TCM in Canada200910_ch _2_.doc


1 C++ 2 Bjarne Stroustrup C++ (system programming) 6 (infrastructure) C++ 7 Herb Sutter 8 C++ (efficiency) (flexibility) 9 (abstraction) (productivity

<4D F736F F D20BB4FAA46BFA4B2C4A447B4C15F D313038A67E5FBAEEA658B56FAE69B9EAAC49A4E8AED72D5FAED6A977A5BB5F >

Microsoft Word - Final Chi-Report _PlanD-KlnEast_V7_ES_.doc

全唐诗28

財 務 委 員 會 審 核 2014 至 2015 年 度 開 支 預 算 的 報 告 2014 年 7 月

untitled

II II

歡 迎 您 成 為 滙 豐 銀 聯 雙 幣 信 用 卡 持 卡 人 滙 豐 銀 聯 雙 幣 信 用 卡 同 時 兼 備 港 幣 及 人 民 幣 戶 口, 讓 您 的 中 港 消 費 均 可 以 當 地 貨 幣 結 算, 靈 活 方 便 此 外, 您 更 可 憑 卡 於 全 球 近 400 萬 家 特

我 非 常 希 望 该 小 组 的 建 议 尤 其 是 其 执 行 摘 要 能 受 到 将 于 2000 年 9 月 来 纽 约 参 加 千 年 首 脑 会 议 的 所 有 领 导 人 的 注 意 这 次 历 史 性 的 高 级 别 会 议 提 供 了 一 个 独 特 的 机 会 使 我 们 能 够

中国民用航空规章


兒 童 會 4 摩 爾 門 經 本 教 材 專 為 8-11 歲 的 兒 童 設 計 耶 穌 基 督 後 期 聖 徒 教 會 台 北 發 行 中 心 印 行

中国石化齐鲁股份有限公司

「保險中介人資格考試」手冊

一、


《小王子》 (法)圣埃克苏佩里 原著

_Chi.ps, page Preflight ( _Chi.indd )

(i) (ii) (iii) (iv) (v) (vi) (vii) (viii) (ix) (x) (i) (ii)(iii) (iv) (v)

Microsoft Word - MP2018_Report_Chi _12Apr2012_.doc

南華大學數位論文

李天命的思考藝術

皮肤病防治.doc

性病防治

中国南北特色风味名菜 _一)

全唐诗24

<4D F736F F D20B6ABD0CBD6A4C8AFB9C9B7DDD3D0CFDEB9ABCBBECAD7B4CEB9ABBFAAB7A2D0D0B9C9C6B1D5D0B9C9CBB5C3F7CAE9A3A8C9EAB1A8B8E C4EA33D4C23131C8D5B1A8CBCDA3A92E646F63>

H

「保險中介人資格考試」手冊

509 (ii) (iii) (iv) (v) 200, , , , C 57

山东出版传媒招股说明书

- 2 - 获 豁 免 计 算 入 总 楼 面 面 积 及 / 或 上 盖 面 积 的 环 保 及 创 新 设 施 根 据 建 筑 物 条 例 的 规 定 4. 以 下 的 环 保 设 施 如 符 合 某 些 条 件, 并 由 有 关 人 士 提 出 豁 免 申 请, 则 可 获 豁 免 计 算 入

2. 我 沒 有 說 實 話, 因 為 我 的 鞋 子 其 實 是 [ 黑 色 / 藍 色 / 其 他 顏 色.]. 如 果 我 說 我 現 在 是 坐 著 的, 我 說 的 是 實 話 嗎? [ 我 說 的 對 還 是 不 對 ]? [ 等 對 方 回 答 ] 3. 這 是 [ 實 話 / 對 的

Hong Kong Filmography Vol VIII ( )

绝妙故事

<4D F736F F D203938BEC7A67EABD7B942B0CAC15AC075B3E6BF57A9DBA5CDC2B2B3B92DA5BFBD542E646F63>

榫 卯 是 什 麼? 何 時 開 始 應 用 於 建 築 中? 38 中 國 傳 統 建 築 的 屋 頂 有 哪 幾 種 形 式? 40 大 內 高 手 的 大 內 指 什 麼? 42 街 坊 四 鄰 的 坊 和 街 分 別 指 什 麼? 44 北 京 四 合 院 的 典 型 格 局 是 怎 樣 的

- 1 - ( ) ( ) ( )

國立中山大學學位論文典藏.PDF

款 及 赔 偿 限 额 及 限 制 给 付 下 述 保 险 金, 但 有 关 医 疗 费 用 及 受 保 服 务 必 须 是 : i. 医 学 上 合 适 及 必 须 的, 及 ii. 由 医 疗 服 务 提 供 者 开 单 收 费 的, 及 iii. 符 合 通 常 惯 性 及 合 理 水 平 的

Microsoft Word - NCH final report_CHI _091118_ revised on 10 Dec.doc

(b) 3 (a) (b) 7 (a) (i) (ii) (iii) (iv) (v) (vi) (vii) 57

西施劇本_04Dec2003.doc

Microsoft Word - 0B 封裡面.doc

<4D F736F F D205B345DB5D8AE4CACD AECAAFC5C1C9C1DCBDD0AB48A4CEB3F8A657AAED>

68003 (Project Unity TC)_.indb

<4D F736F F D20CDF2B4EFB5E7D3B0D4BACFDFB9C9B7DDD3D0CFDEB9ABCBBECAD7B4CEB9ABBFAAB7A2D0D0B9C9C6B1D5D0B9C9CBB5C3F7CAE9A3A8C9EAB1A8B8E C4EA34D4C23137C8D5B1A8CBCDA3A92E646F63>

目 录 院 领 导 职 责... 1 院 长 职 责... 1 医 疗 副 院 长 职 责... 1 教 学 副 院 长 职 责... 2 科 研 副 院 长 职 责... 2 后 勤 副 院 长 职 责... 3 主 管 南 院 区 副 院 长 职 责... 3 党 委 书 记 职 责... 4

穨學前教育課程指引.PDF

(i) (ii) (iii) (iv) (v) (vi) (vii) (viii) (ix) (x) (xi) 60.99%39.01%

眼病防治

中国南北特色风味名菜 _八)

nbqw.PDF

<4D F736F F D20B1B1BEA9D6B8C4CFD5EBBFC6BCBCB7A2D5B9B9C9B7DDD3D0CFDEB9ABCBBEB4B4D2B5B0E5CAD7B4CEB9ABBFAAB7A2D0D0B9C9C6B1D5D0B9C9CBB5C3F7CAE9A3A8C9EAB1A8B8E C4EA36D4C23230C8D5B1A8CBCDA3A92E646F63>

第 二 輯 目 錄.indd 2 目 錄 編 寫 說 明 附 : 香 港 中 學 文 憑 中 國 語 文 科 評 核 模 式 概 述 綜 合 能 力 考 核 考 試 簡 介 及 應 試 技 巧 常 用 實 用 文 文 體 格 式 及 寫 作 技 巧 綜 合 能 力 分 項 等 級 描 述 練 習 一

群科課程綱要總體課程計畫書

39898.indb

穨ecr2_c.PDF

電腦相關罪行跨部門工作小組-報告書

i

发展党员工作手册

i

vi 黃 帝 內 經 即 學 即 用 別 做 反 自 然 的 事 053 成 年 人 應 該 斷 奶 055 吃 肉 吃 素 因 人 而 異 057 要 分 清 飢 和 餓 058 生 活 現 代 化 與 本 能 退 化 061 調 神 就 是 調 節 奏 063 想 冬 泳, 先 問 問 自 己

5498 立 法 會 2013 年 3 月 27 日 李 國 麟 議 員, S.B.S., J.P. 林 健 鋒 議 員, G.B.S., J.P. 梁 君 彥 議 員, G.B.S., J.P. 黃 定 光 議 員, S.B.S., J.P. 湯 家 驊 議 員, S.C. 何 秀 蘭 議 員 李

(Microsoft Word - LE PETIT PRINCE\244\244\244\345\252\251.doc)


Microsoft Word - ????:?????????????

(2) (3) (4) (7)

C Ann.indd

(iii) ,

W. Richard Stevens UNIX Sockets API echo Sockets TCP OOB IO C struct C/C++ UNIX fork() select(2)/poll(2)/epoll(4) IO IO CPU 100% libevent IO UNIX CPU

aplp

_汪_文前新ok[3.1].doc

Microsoft Word - Panel Paper on T&D-Chinese _as at __final_.doc

eipo 3. eipo (i)


江苏宁沪高速公路股份有限公司.PDF

飞行模拟设备的鉴定和使用规则

目 錄 一 前 言 Ⅲ 二 設 計 動 機 與 目 的 Ⅲ 三 表 現 形 式 Ⅲ 四 內 容 架 構 ( 故 事 敘 述 ) Ⅳ 五 作 品 製 作 ( 角 色 設 定 及 畫 面 與 沙 拉 ) Ⅴ 六 作 品 照 片 ( 主 作 品 及 週 邊 產 品 ) ⅩⅩⅡ 七 組 員 分 工 表 ⅩⅩ

Transcription:

Linux muduo C++ (giantchen@gmail.com) 2012-09-30 C++ TCP C++ x86-64 Linux TCP one loop per thread Linux native muduo C++ IT 5 C++ muduo 2 C++ C++ Primer 4

W. Richard Stevens UNIX Sockets API echo Sockets TCP OOB IO C struct C/C++ UNIX fork() select(2)/poll(2)/epoll(4) IO IO CPU 100% libevent UNIX CPU IO UNIX 2 IPC 7 24 C++ STL C++ Linux muduo C++

C++ x86-64 Linux TCP 5 IO one loop per thread Linux native muduo muduo IO C++ one loop per thread IO muduo Linux A C++ C++11 2005 TR1 C++ C++ C++ 1 449 C++ UNIX UNIX C++ Primer C++11 2012 Linux g++ 4.4 C++11 x86-64 CPU GB 5 IO 1 C++ C++ 2 muduo muduo 3 C++ 4 C++ UDP iii

iv Observer Reactor Singleton class heap event loop STL algorithm C++ instance resolution instantiation override dereference class 6 syscall (s) fd file descriptor CPU core kb MB GB 10 3 10 6 10 9 KiB MiB GiB 2 10 2 20 2 30 11.5 11.5 L42 42 [JCP] [CC2e] mutex socket C++ class this mutable class fork(2) muduo::eventloop fork(2) fork() manpage 2 man 2 fork - EventLoop- ThreadPool URL muduo/base/date.h http://chenshuo.com GitHub http://github.com/ chenshuo/recipes/ http://github.com/chenshuo/muduo/ recipes/thread GitHub URL muduo/base/types.h 1 muduo::string typedef 15 namespace muduo 16 { 17 18 #ifdef MUDUO_STD_STRING 19 using std::string; 20 #else //!MUDUO_STD_STRING 21 typedef gnu_cxx:: sso_string string; 22 #endif muduo/base/types.h muduo/base/types.h 1 6 7 muduo muduo/examples/xxx examples/xxx 8 recipes/reactor/xxx reactor/xxx

v diff -u giantchen@gmail.com http://chenshuo.com/book URL http://weibo.com/giantchen http://blog.csdn.net/solstice http://github.com/chenshuo

1 C++ 1 1...................... 3 2.............................. 31 3.............. 59 4 C++........................ 83 5............................ 107 2 muduo 123 6 muduo........................... 125 7 muduo............................. 177 8 muduo....................... 277 3 337 9.......................... 339 10 C++......................... 391 11 C++...................... 429 12 C++................................ 501 4 559 A........................ 561 B C++ Primer 4 C++............. 579 C Boost............................ 591 D TCP............... 593....................................... 599 vi

1 C++ 1 1 3 1.1............................ 3 1.1.1............................ 4 1.1.2 MutexLock MutexLockGuard.................... 4 1.1.3 Counter.................... 4 1.2............................... 5 1.3.................................... 7 1.3.1 mutex............................ 7 1.3.2 mutex............... 8 1.4 Observer......................... 8 1.5............................... 11 1.6 shared_ptr/weak_ptr.......................... 13 1.7....................... 14 1.8 Observer.............................. 16 1.9 shared_ptr......................... 17 1.10 shared_ptr............................ 19 1.11..................................... 21 1.11.1 enable_shared_from_this...................... 23 1.11.2................................. 24 1.12.................................... 26 1.13................................... 26 1.14 Observer................................. 28 2 31 2.1 mutex............................... 32 vii

viii 2.1.1 mutex........................ 33 2.1.2.................................. 35 2.2 condition variable....................... 40 2.3............................ 43 2.4 MutexLock MutexLockGuard Condition.............. 44 2.5 Singleton.......................... 48 2.6 sleep(3)............................ 50 2.7................................... 51 2.8 shared_ptr copy-on-write...................... 52 3 59 3.1................................... 59 3.2........................ 61 3.3........................ 62 3.3.1 one loop per thread.......................... 62 3.3.2................................. 63 3.3.3................................ 64 3.4 TCP............................. 65 3.5........................... 67 3.5.1......................... 69 3.5.2......................... 70 3.5.3........................ 71 3.6.................. 74 4 C++ 83 4.1............................. 84 4.2 C/C++......................... 85 4.3 Linux.............................. 89 4.4........................... 91 4.4.1 pthread_cancel C++....................... 94 4.4.2 exit(3) C++................. 94 4.5 thread............................. 96 4.6 IO.................................. 98

ix 4.7 RAII........................... 99 4.8 RAII fork()................................. 101 4.9 fork()............................... 102 4.10 signal................................ 103 4.11 Linux.......................... 105 5 107 5.1.................................... 109 5.2.................................... 112 5.3................................ 114 5.4.................................... 120 2 muduo 123 6 muduo 125 6.1....................................... 125 6.2....................................... 127 6.3.................................... 129 6.3.1................................ 131 6.3.2.................................. 134 6.3.3................................ 135 6.4.................................... 136 6.4.1 TCP......................... 136 6.4.2 echo........................... 138 6.4.3 finger......................... 140 6.5.................................... 144 6.5.1 muduo Boost.Asio libevent2.......... 145 6.5.2 muduo libevent2...... 148 6.5.3 muduo Nginx................... 153 6.5.4 muduo ZeroMQ................... 156 6.6 muduo........................... 157 6.6.1............................ 157 6.6.2................. 160

x 7 muduo 177 7.1 TCP.............................. 178 7.2.................................... 185 7.3 Boost.Asio........................... 194 7.3.1 TCP................................ 194 7.3.2................................ 195 7.3.3 LengthHeaderCodec.................... 197 7.3.4............................. 198 7.3.5............................. 200 7.4 muduo Buffer....................... 204 7.4.1 muduo IO.......................... 204 7.4.2 non-blocking buffer.... 205 7.4.3 Buffer.......................... 207 7.4.4 Buffer.......................... 209 7.4.5 Buffer............................. 211 7.4.6............................. 217 7.4.7............................ 218 7.5 Google Protobuf........ 220 7.5.1 Protobuf............. 220 7.5.2 type name Message............ 221 7.5.3 Protobuf.......................... 226 7.6 muduo Protobuf............ 228 7.6.1 codec...................... 229 7.6.2 ProtobufCodec......................... 232 7.6.3 dispatcher................ 232 7.6.4 ProtobufCodec ProtobufDispatcher....... 233 7.6.5 ProtobufDispatcher.................. 234 7.6.6 ProtobufCodec ProtobufDispatcher......... 236 7.7........................ 237 7.7.1...................... 237 7.7.2 muduo.................... 238

xi 7.8..................................... 240 7.8.1............................. 240 7.8.2 Linux............................ 241 7.8.3 muduo......................... 242 7.8.4 Boost.Asio Timer........................ 243 7.8.5 Java Netty............................ 245 7.9..................... 248 7.10 timing wheel........................ 250 7.10.1 timing wheel.......................... 251 7.10.2............................ 254 7.11............................. 257 7.12.................. 260 7.13 socks4a.............................. 264 7.13.1 TCP.............................. 264 7.13.2 socks4a.......................... 267 7.13.3 N : 1 1 : N........................ 267 7.14.................................... 267 7.15................................. 268 7.15.1 UDNS................................. 270 7.15.2 c-ares DNS............................... 272 7.15.3 curl................................... 273 7.15.4.................................. 275 8 muduo 277 8.0 EventLoop........................... 277 8.1 Reactor.............................. 280 8.1.1 Channel class............................. 280 8.1.2 Poller class.............................. 283 8.1.3 EventLoop........................... 287 8.2 TimerQueue.............................. 290 8.2.1 TimerQueue class........................... 290 8.2.2 EventLoop........................... 292

xii 8.3 EventLoop::runInLoop()........................ 293 8.3.1 TimerQueue................... 296 8.3.2 EventLoopThread class........................ 297 8.4 TCP................................ 299 8.5 TcpServer............................ 303 8.5.1 TcpServer class............................ 304 8.5.2 TcpConnection class......................... 305 8.6 TcpConnection........................... 308 8.7 Buffer................................ 313 8.7.1 TcpConnection Buffer............. 314 8.7.2 Buffer::readFd().......................... 315 8.8 TcpConnection........................... 316 8.9 TcpConnection.............................. 320 8.9.1 SIGPIPE................................ 321 8.9.2 TCP No Delay TCP keepalive.................. 321 8.9.3 WriteCompleteCallback HighWaterMarkCallback....... 322 8.10 TcpServer............................... 324 8.11 Connector................................... 327 8.12 TcpClient................................... 332 8.13 epoll...................................... 333 8.14................................. 336 3 337 9 339 9.1........................... 341 9.1.1........................ 343 9.1.2..................... 344 9.2........................... 349 9.2.1 7 24................ 352 9.2.2............... 354 9.3........................ 356

xiii 9.4........................... 360 9.4.1................................ 361 9.4.2................................ 362 9.4.3 TCP............................ 363 9.5......................... 364 9.6............................... 367 9.6.1.......................... 368 9.6.2 ICE................... 369 9.7........................ 370 9.7.1......................... 370 9.7.2........................ 373 9.7.3........................ 374 9.7.4..................... 375 9.7.5................................ 379 9.8............... 380 9.8.1 1......................... 382 9.8.2 2........... 383 9.8.3 3............. 386 9.8.4 4 naming service............. 389 10 C++ 391 10.1 C......................... 394 10.1.1 C...................... 395 10.1.2 C........................... 398 10.2 C++................................ 399 10.2.1................................ 399 10.2.2................................ 402 10.3 C++ linking............................. 404 10.3.1................................ 406 10.3.2 inline............................... 407 10.3.3.................................. 409 10.3.4................................. 414

xiv 10.4........................ 415 10.4.1............................. 416 10.4.2.......................... 417 10.5........................ 418 10.5.1............................ 423 10.5.2........................ 424 10.5.3............................ 428 11 C++ 429 11.1 C++................................ 429 11.2............................ 431 11.2.1......................... 432 11.2.2 ABI..................... 433 11.2.3........................ 435 11.2.4 COM........................... 435 11.2.5................................ 436 11.3........................ 436 11.3.1 C++.................... 437 11.3.2.................. 438 11.3.3........................ 439 11.3.4 Linux COM............ 442 11.3.5 Java.......................... 443 11.4............................ 443 11.5 boost::function boost::bind............. 447 11.5.1................................ 450 11.5.2............................ 451 11.5.3..................... 453 11.6 iostream............................ 457 11.6.1 stdio..................... 457 11.6.2 iostream......................... 461 11.6.3 iostream................. 463

xv 11.6.4 iostream..................... 464 11.6.5 iostream..................... 468 11.6.6 300 memory buffer output stream........... 476 11.6.7 C++ IO................... 480 11.7............................... 482 11.7.1............................. 482 11.7.2............................ 483 11.7.3............................ 488 11.7.4 C++.......................... 488 11.7.5............................ 490 11.7.6...................... 493 11.7.7............................ 495 12 C++ 501 12.1......................... 501 12.1.1..................... 503 12.1.2...................... 505 12.2 ::operator new()...................... 507 12.2.1......................... 507 12.2.2 ::operator new()................... 508 12.2.3 ::operator new()................. 508 12.2.4............................ 509 12.2.5 ::operator new()................... 510 12.2.6 malloc()...................... 512 12.2.7 class ::operator new()......... 513 12.2.8.................... 513 12.3........................... 514 12.3.1............................ 515 12.3.2 C/C++......................... 516 12.3.3............................ 516 12.3.4......................... 517 12.3.5................................ 521

xvi 12.4 mock........................ 522 12.4.1......................... 522 12.4.2 link seam...................... 524 12.5 namespace............................. 526 12.5.1 C static................. 526 12.5.2 C++ static................ 526 12.5.3 namespace..................... 527 12.5.4................................ 529 12.6....................... 529 12.6.1 diff........................ 530 12.6.2 grep....................... 537 12.6.3............................. 538 12.7 std::string............................... 539 12.7.1 eager copy....................... 540 12.7.2 copy-on-write..................... 542 12.7.3 SSO........................ 543 12.8 STL algorithm................ 546 12.8.1 next_permutation().............. 546 12.8.2 unique()................... 548 12.8.3 {make,push,pop}_heap()............ 549 12.8.4 partition().... 553 12.8.5 lower_bound() IP............. 554 4 559 A 561 B C++ Primer 4 C++ 579 C Boost 591 D TCP 593 599