C UNIX Socket
可以參考這個連結的 code: Unix Domain Socket,我後來發現我們 project 裡的 code 也是參考這邊的= =|||,不過的確是還缺少一些東西,像是可以再加上 select
或是 pselect
來另外處理 signal,我自己是用 pselect
就是,有想過用 ppoll
來做,不過實際會聽的連線很少,感覺沒必要就直接用 pselect
了。
修正一下,之後還是改用 ppoll
好了XD,查了一下資料,就算是一個 socket,poll
還是比 select
快~~,參照 Comparative measurements and analysis of I/O event notification mechanisms。epoll
看起來還是不用考慮,因為 event-based 在基本處理上的 overhead 都會比較大,只有一個 socket 的話還會比 poll 慢,上面連結內的數據也是顯示如此。
另外就是傳送資料的方式,因為是 local UNIX socket,所以就直接用 struct 轉了(炸),如果是不同機器上用 TCP socket 的話,這樣其實會有 endian 和 padding 的問題,參照以下連結:
不是改用 Protocol Buffers 這類的 library 封裝,不然就是直接用字串傳了。
Ref:
comments powered by Disqus