关于线程中死循环的问题?(WinScok overlapped 重叠I/O模型编程)
日期:2006-08-20 荐:
关于线程中死循环的问题?(WinScok overlapped 重叠I/O模型编程)从网上下载了一个overlapped 重叠I/O模型的Winsock API网络编程的源代码,其中服务器端程中有两个线程,一个是ListenThread,另一个是OverlappedThread,ListenThread:线程的作用是不断从客户端接受连接,并为之产生相对应的acceptSock(n),Overlapped(n),Event(n),然后对该acceptSock(n)产生一个WSARecv请求。该线程一进去就是一个死循环while(true){处理客户端连接请求代码;}OverLapped: 线程的是不断的等待客户端发来信息的事件,一进去也是一个死循环,while(true){等待客户发来信息的事件触发,Reset该事件对象,分析事件对象的值:if not (wsa_wait_timeout or wsa_wait_failed)取客户端发来的信息 else continnue; 然后Reset该事件对象,然后对该sock再产生一次WSARecv请求(即调用该函数一次)}我想问的是按照传统的编程方法,若死循环的话,程序一定会跳不出死循环,(我还特地在VB中测试了一下,即在一个按钮(该界面中还有另外一个按钮)中写while 1=1 wend , 然后按了这个按钮,第二个按钮果然不能再按了,因程序已失去响应),但是在线程中就可有死循环而不导致程序死在那里吗?烦请高手解释一下线程中死循环的工作原理!不甚感谢!正如你自己所说,while(true)确实为一个死循环,它的意思是不断地从客户端接收连接。这个语句是在线程里执行的,所以,可以通过kill线程来停止它的运行。
标签: