线程 及 代码执行过程

xionggch 2016-03-28 01:59:23
主要硬件参数:三星S3C2416的CPU主频400MHZ,64M的DDR2,128MB的NandFlash,Windows CE .NET5.0;

//程序创建个线程接收socket数据
//线程回调函数,线程收到socket数据调该函数
bool CEnergy_MonDlg::mysocketData( unsigned char* pIn, long nInLen, unsigned char* pOut, long& nOutLen )
{
test_Revcstart(); //log--写接收开始时间
//解包数据
test_Revcend(); //log--写接收结束时间
SetTimer( TIMER_ID_CONTINUES, 50, NULL ); //通过定时器发送下一个数据
}


void CEnergy_MonDlg::OnTimer(UINT_PTR nIDEvent)
{
case TIMER_ID_CONTINUES:
{
KillTimer( TIMER_ID_CONTINUES );
test_Sendstart(); //log--写发送开始时间
//打包发送数据
test_Sendend(); //log--写发送结束时间
}
break;

}


问题1:发送结束时间的log 比 接收开始的时间 晚?
问题2:发送开始 到 接收结束 时间比较长(单独测试打包,解包,发送,接收时间都还行);怎么改进?
...全文
196 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xionggch 2016-03-30
  • 打赏
  • 举报
回复
引用 3 楼 91program 的回复:
[quote=引用 2 楼 xionggch 的回复:] [quote=引用 1 楼 91program 的回复:] 发送与接收,应该是两个独立的线程,没有时间上的关系吧。 如果有关系,也是你自己的逻辑问题
那抓捕的时间log怎么解释???[/quote] 没什么好解析的。 从功能上来说,完全可以只发不收、或者只收不发。[/quote] 测试服务端也是我自己写,只收发消息,可以说服务端和客户端是一对一的通讯的
  • 打赏
  • 举报
回复
一个数据包不是接收的就是发送的,只会有2个时间,为啥你要搞4个时间? 不管收发,你打log只管打上一对时间,然后收发独立,排列好顺序在来看。你这个太乱了。比如说收到一个数据包,然后你触发一个定时器,定时器50ms,时间没到,又一个数据包进来,你又设置了定时器,你能解释你的时间怎么打吗?????????
  • 打赏
  • 举报
回复
收发写两个线程独立开来,别弄什么定时器(会被冲掉),然后每个线程记录自己处理数据的时间。独自写log,由于你要一起排序,操作log需要添加线程同步代码。
91program 2016-03-29
  • 打赏
  • 举报
回复
引用 2 楼 xionggch 的回复:
[quote=引用 1 楼 91program 的回复:] 发送与接收,应该是两个独立的线程,没有时间上的关系吧。 如果有关系,也是你自己的逻辑问题
那抓捕的时间log怎么解释???[/quote] 没什么好解析的。 从功能上来说,完全可以只发不收、或者只收不发。
xionggch 2016-03-29
  • 打赏
  • 举报
回复
引用 1 楼 91program 的回复:
发送与接收,应该是两个独立的线程,没有时间上的关系吧。 如果有关系,也是你自己的逻辑问题
那抓捕的时间log怎么解释???
91program 2016-03-28
  • 打赏
  • 举报
回复
发送与接收,应该是两个独立的线程,没有时间上的关系吧。 如果有关系,也是你自己的逻辑问题

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧