我在一个发送线程中send一个消息给服务器,并将该数据加入一个队列中
伪代码如下send()//发送消息EnterCriticalSection()
cmppsock.ListWaitResp.AddTail(msg);//将发送给服务器的消息加入这个队列
LeaveCriticalSection()然后在另外一个接收线程中recv
阻塞 + select模型接受recv()//接受数据EnterCriticalSection()
cmppsock.ListWaitResp.GetCount()//发现这里的队列的消息数量居然是0
LeaveCriticalSection()
跟踪发现 原来代码是刚执行完send后就到了recv这边接受了
然后接着求队列中的消息数量,当然是零。。(send后没来得及执行ListWaitResp.AddTail(msg))强烈注意(我先开了Recv线程,后开send线程)麻烦帮忙解决一下这个问题
伪代码如下send()//发送消息EnterCriticalSection()
cmppsock.ListWaitResp.AddTail(msg);//将发送给服务器的消息加入这个队列
LeaveCriticalSection()然后在另外一个接收线程中recv
阻塞 + select模型接受recv()//接受数据EnterCriticalSection()
cmppsock.ListWaitResp.GetCount()//发现这里的队列的消息数量居然是0
LeaveCriticalSection()
跟踪发现 原来代码是刚执行完send后就到了recv这边接受了
然后接着求队列中的消息数量,当然是零。。(send后没来得及执行ListWaitResp.AddTail(msg))强烈注意(我先开了Recv线程,后开send线程)麻烦帮忙解决一下这个问题
EnterCriticalSection()
int count = cmppsock.ListWaitResp.AddTail(msg);//将发送给服务器的消息加入这个队列
LeaveCriticalSection()
if(count > 0)
break;
else
Sleep(50);
}
那接收端干脆一直等待,直到count非0就是了。
EnterCriticalSection()
send()//发送消息
cmppsock.ListWaitResp.AddTail(msg);//将发送给服务器的消息加入这个队列
LeaveCriticalSection()
EnterCriticalSection()
recv()//接受数据
cmppsock.ListWaitResp.GetCount()//发现这里的队列的消息数量居然是0
LeaveCriticalSection()
send()//发送消息
cmppsock.ListWaitResp.AddTail(msg);//将发送给服务器的消息加入这个队列
LeaveCriticalSection()recv()//接受数据
EnterCriticalSection()
cmppsock.ListWaitResp.GetCount()//发现这里的队列的消息数量居然是0
LeaveCriticalSection()