作者snh (一个人在半夜醒来)
看板Programming
标题[问题] 请问protocol stack data传递
时间Thu Mar 31 17:05:20 2011
假设有 A->B->C 三层 A最上层 C最下层
在此protocol stack中A产生的data会pass给B
B将A的data当作payload再加上自己的header再pass给C
pseudo code大概是
A_Send(){
B_Send(a_msg);
}
B_Send(a_msg){
b_msg = b_hdr + a_msg;
C_Send(b_msg);
}
一般我看到的实作方式好像都是
收到上层资料後配置一块记忆体
填入header再把上层传来的memory copy过去
每一层都要做一次 配置记忆体和复制资料
感觉很没效率 是不是有其他好的方法来解决这种问题?
希望是C语言可以做得到
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.1.252
1F:推 LPH66:应该不可能 因为 A 不知道 C 的存在 140.112.28.92 03/31 20:10
2F:→ LPH66:A 只知道讯息丢给 B 会负责传过去而已 140.112.28.92 03/31 20:11
3F:→ yauhh:什麽叫做效率呢? 分层设计的用意是限定范围,218.160.114.217 03/31 20:28
4F:→ yauhh:使每一层的实作简单并可以做到局部最大效能,218.160.114.217 03/31 20:28
5F:→ yauhh:这就已经是一种有效率的方式了.218.160.114.217 03/31 20:29
LPH大可能误会最後一句
C是指C语言 已修改
效率的意思是
A的资料在B会copy一次
到C时属於A层的资料又会copy一次
同样的资料 传几层就会copy几次
※ 编辑: snh 来自: 175.181.245.217 (03/31 20:51)
6F:→ yauhh:很普通218.160.114.217 04/01 00:21
7F:→ yauhh:并不是空间极端省着用就叫作效率,在记忆体218.160.114.217 04/01 01:38
8F:→ yauhh:方面更重要的是顾到资料一致. 你写个很大218.160.114.217 04/01 01:38
9F:→ yauhh:很难写的程式维护同一份记忆体空间资料一致,218.160.114.217 04/01 01:39
10F:→ yauhh:倒不如多几个资料复本,但程式很好写.218.160.114.217 04/01 01:39
11F:→ LPH66:我的 C 是指最下层.... 140.112.28.92 04/01 12:16
12F:→ snh:to LPH66 那我不太懂您的意思^^175.181.245.217 04/01 20:39
13F:→ mcauther:每一层可以用 传址,size,到最後才打包 114.37.135.102 04/01 20:53
14F:推 alumi7:很多stack有所谓zero-copy, 可以去看看怎 118.167.11.20 04/04 01:15
alumi7大 可以给keyword吗? 谢谢
※ 编辑: snh 来自: 175.181.245.217 (04/06 21:06)