关于多线程里使用socket引发“ntdll.dll!77bd6344()”的问题 java socket 多线程

在JRU的server程序中,在MainFrame.cpp里,SendMessageToViewer线程中,在运行过程中可能引发让人摸不清头脑的“ntdll.dll!77bd6344()”问题,找了很长时间,都不知道问题出在哪,后来才发现是因为结束了两次线程引发的(我认为)。程序内容大概如下

if(head->next !=NULL)

{

sendresult=send(...);

if(sendresult<=0)

关于多线程里使用socket引发“ntdll.dll!77bd6344()”的问题 java socket 多线程

{

closesocket();

closeHandle(这个线程的句柄);

其他一些释放资源的处理;

}

}

else

{

sendresult=send(...);

if(sendresult<=0)

{

closesocket();

closeHandle(这个线程的句柄);

其他一些释放资源的处理;

}

}

表面上看,这些都是很合适的,似乎两个关闭线程的操作只能执行其中的一个,然而那个错误的发生正是因为关闭线程释放资源的操作执行了两次所造成的。

sendresult取值的获得,在发送成功时可以理解为立刻获得取值(其实也不一定),但是有时在网络中断的情况下,发送了很多数据帧,并没有发送成功,但是也不会立刻返回一个sendresult的值,当确定中断之后,会获得多次发送而返回的sendresult的值,所以上面两个关闭线程释放资源的操作都可能被同时执行,从而关闭了两次线程,从而产生了错误。

问题是解决了,但是我觉得这么理解可能不是特别的准确,只是自己的理解

  

爱华网本文地址 » http://www.aihuau.com/a/25101010/27325.html

更多阅读

眼霜怎么用如何正确使用眼霜 涂眼霜的正确方法视频

眼霜怎么用如何正确使用眼霜——简介眼部肌肤是人体最薄肌肤,在年龄增长的同时,容易比其它部位抢先出现干燥及皱纹。因此,在眼部衰老之前就应做好护理工作,护理眼部肌肤使用眼霜最合适,那眼霜有什么作用呢,眼霜怎么用,和大家分享下一些关于

由甄嬛传引发:雍正皇帝的老婆有几个?

看过《甄嬛传》第一、二两集的朋友会发现,这第一集里有个“孝敬宪皇后”;而第二集里又说甄嬛与早先过世的“纯元皇后”十分相像。这就引发出了下面的三个问题:一是一般而言,清朝的皇帝到底应该有几个皇后?二是具体到雍正皇帝本人而言,他到

Windows7下使用华为ET128上网卡的问题 华为et128怎么用

下了很大决心,前两天终于重新安装了操作系统,将原来运行了2年多的Windows Server2003企业版替换成了现在的32位Windows7专业版。之所以要下决心,原因是每次安装完系统,要把系统调到适应自己习惯,都要很长时间。并且,尽管安装之前做备份,但

声明:《关于多线程里使用socket引发“ntdll.dll!77bd6344()”的问题 java socket 多线程》为网友人心无由多变分享!如侵犯到您的合法权益请联系我们删除