- 主题:同事间因为一个问题差点吵起来了
预先限定了是内存传递,这不是好的设计数据结构的习惯
传输部分和解析部分应该解耦合
他是网络传过来的还是共享内存的
只需要给个指针和长度
解析部分应该是一样的逻辑
【 在 flyren911 的大作中提到: 】
: 接收信号的实现我们不管,是操作系统的功能。嵌入式系统,发送和接收就是同一块内存的所有者的变更,所以一般情况下是不会有保存在本地的需求的。接收到信号后进行处理,处理完后释放。
: 你没有len
: 那你的传输部分和解析部分就是绑死的
: ...................
--
FROM 118.199.90.*
本地通行又不浪费带宽,这种内存消耗又微乎其微,把所有结构体定义清楚,最后一个union来解析不是清楚的很吗
【 在 flyren911 的大作中提到: 】
: 今天同事因为这个事差点吵起来了,事情是这样的:
: 两个process之间通过信号通信,A发了一个动态信号给B,B需要用一个静态数据结构保存下来在本地处理。信号数据结构简化了一下,看起来像这样,portCap的长度是动态的,band的长度也是动态的。
: typedef struct bandType
: ...................
--
FROM 112.64.184.*
论程序员的修炼
写能让人看懂的代码,是最高境界
【 在 flyren911 的大作中提到: 】
: 今天同事因为这个事差点吵起来了,事情是这样的:
: 两个process之间通过信号通信,A发了一个动态信号给B,B需要用一个静态数据结构保存下来在本地处理。信号数据结构简化了一下,看起来像这样,portCap的长度是动态的,band的长度也是动态的。
: typedef struct bandType
: ...................
--来自微水木3.5.11
--
FROM 114.242.250.*
就事论事,楼主他们已经走这条路了,那么接下来哪两条岔路更好而已,你们非要说你就不该走到这里来,那有什么意义
【 在 slowaction 的大作中提到: 】
: 你每次都申请最大的,你搞这种变长数据结构干什么呢
: 白白增加了理解成本
--
FROM 112.17.236.*
这份数据不是从自己这部分产生的
别人穿递过来的时候一定是有长度的
你申请内存的时候要根据数据长度来申请
而不是根据理论长度
【 在 webhost 的大作中提到: 】
: 就事论事,楼主他们已经走这条路了,那么接下来哪两条岔路更好而已,你们非要说你就不该走到这里来,那有什么意义
--
FROM 118.199.90.*
看了一下感觉都可以吧。
只要解析数据正确就行了呗。
【 在 flyren911 的大作中提到: 】
: 今天同事因为这个事差点吵起来了,事情是这样的:
: 两个process之间通过信号通信,A发了一个动态信号给B,B需要用一个静态数据结构保存下来在本地处理。信号数据结构简化了一下,看起来像这样,portCap的长度是动态的,band的长度也是动态的。
: typedef struct bandType
: ...................
--
FROM 27.154.193.*
1就是表明是动态的,可能是为了兼容老的编译器?正常情况下应该写成0的。
【 在 bihai 的大作中提到: 】
: 看不懂。这个portCap长度是动态的是什么意思?你不是写了一个一在里面吗?
:
: #发自zSMTH@HD1925
--
FROM 193.15.240.*
就是解析数据可能会出错啊,
接收信号的逻辑是这样的,这个不能更改,receive返回的就是发送方分配的那块内存:
local_radioCapT local_radioCap = *(local_radioCapT *)receive(SIG_ID);
你解析数据的时候正常反应是不是就是这样引用了local_radioCap.portCap[i].bandNum ?
【 在 gluon521 的大作中提到: 】
: 看了一下感觉都可以吧。
: 只要解析数据正确就行了呗。
:
--
修改:flyren911 FROM 193.15.240.*
FROM 193.15.240.*
恰恰就是没有长度的,长度得自己一项一项加起来计算出来,这个是客户协议定义的问题,没法解决。
【 在 slowaction 的大作中提到: 】
: 这份数据不是从自己这部分产生的
: 别人穿递过来的时候一定是有长度的
: 你申请内存的时候要根据数据长度来申请
: ...................
--
FROM 193.15.240.*
按照你定义的数据结构,
别人也没法直接处理数据
或者你给函数遍历或者他写回调
你这数据结构,传输/解析/处理必须要一起完成
本来这是独立的三件事
【 在 flyren911 的大作中提到: 】
: 就是解析数据可能会出错啊,
: 接收信号的逻辑是这样的,这个不能更改,receive返回的就是发送方分配的那块内存:
: local_radioCapT local_radioCap = *(local_radioCapT *)receive(SIG_ID);
: ...................
--
FROM 223.104.40.*