1 如果一个程序中 有一个线程用套接字去监听本机80端口 被阻塞时候 由于windows不可能让这个线程一直霸占CPU Windows会怎么做呢?该怎样调度这个线程呢?我觉得如果调离了这个线程或者挂起了这个线程 那么岂不是来了消息也不一定能接收到了吗?2 有没有这样的情况 80端口是很重要的端口 很多程序恐怕都要去监听它 那么会不会有这样的情况 某个程序的某个线程正在等待对方一个回复 但是被调度走了 结果回复被另一个无关的线程得到 这样3 我写的一个程序 在对一个消息的响应后(比如单击某按钮) 立刻去开启一个线程 并用套接字去监听80端口 结果程序编译 链接没有问题 但是当响应我的消息的时候(比如我点击了那个按钮)总是会引发一个中断 说是调用了WSACancelBlockingCall这个函数 这个函数貌似就是取消我的阻塞(监听ing) 我该怎么样处理呢?我就是要改程序去监听80端口啊 结果一监听就被中断高手指点指点我 不一定要全部回答 您知道多少就指点我多少 小弟感谢不尽

解决方案 »

  1.   

    多谢楼上的回答 不过太简便了吧 
    问题3 我已经跟踪了 知道是调用了WSACancelBlockingCall这个函数 才导致的中断 我就不理解问什么要调用这个函数 破坏了阻塞线程
      

  2.   

    1 如果一个程序中 有一个线程用套接字去监听本机80端口 被阻塞时候 由于windows不可能让这个线程一直霸占CPU Windows会怎么做呢?该怎样调度这个线程呢?我觉得如果调离了这个线程或者挂起了这个线程 那么岂不是来了消息也不一定能接收到了吗? 
    你这个子线程的功能本身就是用来阻塞,监听端口啊,有何不可,你不需要塔监听可以退出线程就是了。
      

  3.   

    小弟就是想问WSACancelBlockingCall这个函数 
    1 为什么会被调用?
    2 什么时候被调用 难道一个线程accepet了绑定了80端口的套接字 等待连接 被阻塞 一定会被WSACancelBlockingCall这个函数破坏阻塞?晕了