作者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