作者in2 (聖誕玉兔 *^^*)
看板PttCurrent
標題另一種水球的實作方式
時間Mon May 12 10:57:39 2003
現在的水球作法大概是,
1.(sender)把資料寫進對方的 shared-memory 內,
2.(sender)送 SIGUSR1過去
3.(receiver)進 SIGUSR1的 handler,
把資料從 shared-memory寫到 local space ,
把資料 show 出來,
再 return 回原來的程式
我建議可以改成這樣:
假定現在有一個叫 waterd 的 daemon ,
裡面有所有 connection 的 fd .
1.(sender)把水球訊息寫一個 message queue到 waterd
2.(waterd)查出對方的 connection fd, 直接將畫面寫到對方的 fd 上
(於是 receiver 的畫面就更新)
3.(waterd)寫一份到 receiver 的 shared-memory
4.(receiver)直到按下 Ctrl-R 或要丟水球的時候, 才把資料從 shm中拿回 local space
如此可以省掉大量的 SIGUSR1以及進該 handler的時間~ :Q
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 140.112.30.143