在一个处理线程中如下写一个网络收发包的线程程序,是否会使该线程阻塞?
  while(true) do
  begin
    ZeroMemory(@data[0],1500);
    pdata:=@data[0];
    szfrom:=sizeof(TSockAddr);
    recvCount := recvfrom(ServiceSocket, pdata^,1500,0,from,szfrom);    //接收错误
    if (recvCount  = -1) then
    begin
      continue;
    end;
    ……
  end;
其中if (recvCount  = -1) then contiue;是否会使程序进入死循环?从而导致线程阻塞?

解决方案 »

  1.   

    我有一个多线程问题,我有一个while 循环,在多线程实现中,只执行了一遍,一直要等到程序关闭他才继续执行为什么
      

  2.   

    up!请大侠指教!
    其中if (recvCount  = -1) then contiue;是否会使程序进入死循环?从而导致线程阻塞?
      

  3.   

    我知道程序肯定会在recvfrom阻塞(本来我就用的同步SOCKET编程)
    问题是if (recvCount  = -1) then contiue这一句会不会在某种情况下死循环?
      

  4.   

    当然会了,比较另一端关闭了socket,你那段又没检测,只有接收,那只会返回Socket_Error = -1,那就死了一般如果返回 -1,正常的做法就是: raise ESocketError.Create('')