boost::asio是乙個高效能的網路開發庫,windows下使用iocp,linux下使用epoll。與ace不同的是,它並沒有提供乙個網路框架,而是採取元件的方式來提**用介面。但是對於常見的情況,採用乙個好用的框架還是能夠簡化開發過程,特別是asio的各個非同步介面的用法都相當類似。
受到 sp server
框架的影響,我使用asio大致實現了乙個多執行緒的半非同步半同步伺服器框架,以下是利用它來實現乙個echo伺服器:
1. 實現**:
static
void
onsessionstarted(sessionptr
const
&session)
static
void
onsession(
sessionptr
const
&session)
2. 乙個單執行緒的echo伺服器:
void
server_main()
3. 乙個多執行緒的echo伺服器(半非同步半同步:乙個主線程,4個工作者執行緒)
void
server_main2()
其中主要用到了兩個類,session和asioserver,大約有以下介面:
struct
session
;struct
asioservice
;struct
asioserver :
public
asioservice
;有了這樣乙個思路,實現起來就很容易了。重點是以下兩點:
1。緩衝區的管理與記憶體池的使用
2。為了保證session的執行緒安全,必須要設定乙個掛起狀態。
還有乙個好處,就是完全隔絕了asio的應用介面,不用再忍受asio漫長的編譯時間了。**就不貼在這裡了,有興趣的可以通過email **。
利用CoreAnimation實現乙個時間的進度條
那麼接下來就是如何用coreanimation實現乙個進度條控制項了。首先呢,讓我們建立乙個繼承自cashapelayer的wkprogressbarlayer。wkprogressbarlayer預設自身的bounds就是整個進度條的大小。inte ce wkprogressbarlayer ca...
利用CoreAnimation實現乙個時間的進度條
那麼接下來就是如何用coreanimation實現乙個進度條控制項了。首先呢,讓我們建立乙個繼承自cashapelayer的wkprogressbarlayer。wkprogressbarlayer預設自身的bounds就是整個進度條的大小。inte ce wkprogressbarlayer ca...
利用 Proxy API 實現乙個簡易 MVVM
vue 3 使用了 proxy api,有些手癢,就弄乙個簡單的結構玩玩吧。proxy api 見 mdn proxy 依賴收集 mvvm 初始化時劫持資料,並設定觀察者 dep。模仿 vue 結構是在 get 時往觀察者 dep 推入被觀察者 watcher,然後 set 時讓觀察者通知所有被觀察...