摘要:一、背景 在 "為什么需要異步編程" 文章末尾提到,"為了使socket和緩沖區(read或write)在整個異步操作的生命周期一直保持活動,我們需要采取特殊的保護措施。你的連接類需要繼承自enabled_shared_from_this,然后在內部保存它需要的緩沖區,而且每次異步調用都要傳遞一個智
閱讀全文
摘要:一、背景 在 "Reactor和Proactor模型" 一文中講到,Reactor模型提供了一個比較理想的I/O編程框架,讓程序更有結構,用戶使用起來更加方便,比裸API調用開發效率要高。另外一方面,如果希望每個事件通知之后,做的事情能有機會被代理到某個線程里面去單獨運行,而線程完成的狀態又能通知回
閱讀全文
摘要:一、背景 前面介紹了I/O多路復用模型,那有了I/O復用,有了epoll已經可以使服務器并發幾十萬連接的同時,還能維持比較高的TPS,難道還不夠嗎?比如現在在使用epoll的時候一般都是起個任務,不斷的去巡檢事件,然后通知處理,而比較理想的方式是最好能以一種回調的機制,提供一個編程框架,讓程序更有結
閱讀全文
摘要:小程序功能:簡單的父子進程之間的通訊,子進程負責每隔1s不斷發送"message"給父進程,不需要跑多個應用實例,不需要用戶輸入。 首先上代碼 #include<assert.h> #include<signal.h> #include<stdio.h> #include<sys/epoll.h>
閱讀全文
摘要:背景 在文章《unix網絡編程》(12)五種I/O模型中提到了五種I/O模型,其中前四種:阻塞模型、非阻塞模型、信號驅動模型、I/O復用模型都是同步模型;還有一種是異步模型。 想寫一個系列的文章,介紹從I/O多路復用到異步編程和RPC框架,整個演進過程,這一系列可能包括: I/O多路復用模型 epo
閱讀全文
摘要:背景 隨著各大企業和研究機構在PyTorch、TensorFlow、Keras、MXNet等深度學習框架上面訓練模型越來越多,項目的數據和計算能力需求急劇增加。在大部分的情況下,模型是可以在單個或多個GPU平臺的服務器上運行的,但隨著數據集的增加和訓練時間的增長,有些訓練需要耗費數天甚至數周的時間,
閱讀全文
摘要:前言 開源的分布式存儲系統比較多,比較有名的有:Ceph、GlusterFS、HDFS、TFS等。這些系統都比較復雜,代碼動則幾十上百萬行,這些系統對初學者來說門檻比較高,特別是對于從事非分布式存儲行業,但又想跨行學習分布式的同學來說,往往有這想法,但是不知道怎么入手。本文介紹之前實現的一個C++極
閱讀全文
摘要:前言 RPC采用客戶機/服務器模式實現兩個進程之間的相互通信,socket是RPC經常采用的通信手段之一。當然,除了socket,RPC還有其他的通信方法:RDMA、http、管道…… 網絡開源的RPC框架也比較多,一個功能比較完善的RPC框架代碼比較多,如何快速的從這些代碼盲海中梳理清楚主要脈絡,
閱讀全文