佚名通过本文主要向大家介绍了线程的执行过程,存储过程多线程,多线程死锁代码,java多线程代码,远程线程注入代码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 线程 及 代码执行过程
描述:
//程序创建个线程接收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:发送开始 到 接收结束 时间比较长(单独测试打包,解包,发送,接收时间都还行);怎么改进?
解决方案1:
没什么好解析的。
从功能上来说,完全可以只发不收、或者只收不发。 解决方案4:
描述:
Wince线程代码执行过程
主要硬件参数:三星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:发送开始 到 接收结束 时间比较长(单独测试打包,解包,发送,接收时间都还行);怎么改进?
解决方案1:
收发写两个线程独立开来,别弄什么定时器(会被冲掉),然后每个线程记录自己处理数据的时间。独自写log,由于你要一起排序,操作log需要添加线程同步代码。
解决方案2: 一个数据包不是接收的就是发送的,只会有2个时间,为啥你要搞4个时间?
不管收发,你打log只管打上一对时间,然后收发独立,排列好顺序在来看。你这个太乱了。比如说收到一个数据包,然后你触发一个定时器,定时器50ms,时间没到,又一个数据包进来,你又设置了定时器,你能解释你的时间怎么打吗?????????
没什么好解析的。
从功能上来说,完全可以只发不收、或者只收不发。 解决方案4:
发送与接收,应该是两个独立的线程,没有时间上的关系吧。
如果有关系,也是你自己的逻辑问题