在看书上一个例子,他在主线程中初始化套接字,然后listen,然后创建了一个子线程,在这个线程中等待用户的accept我在想,如果用户的连接到来的时候,恰好是主线程在运行,那这个程序会不会有问题? 谢谢

解决方案 »

  1.   

    先socket()再accept()就没事 不然accept会失败 不管是否在一个线程上执行
      

  2.   

    如果主线程在运行,但很快会切换到子线程。子线程会在accept()等待返回。
    而且一般要测试accept返回值是否有效。
    while(true)
    {
       s = accept();
       if(s < 0)
       {
          ....
       }
       else
       ...
    }
      

  3.   

    不明白,这个子线程没有被挂起啊,一直在运行中,里面有个for循环,一直等待客户端的连接,我想问的是当客户端连接到来的时候,却是主线程在运行,这时会发生什么情况谢谢你
      

  4.   

    操作系统就要为每个线程安排一定的C P U 时间。它通过以一种循环方式为线程提供时间片(称为量程),造成一种假象,仿佛所有线程都是同时运行的一样。
    当到子线程时间片的时候就运行子线程,将主线程挂起,这些操作因该由操作系统完成的。