• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • PHP超時處理全面總結(6)

    發表于:2013-10-28來源:酷勤網作者:不詳點擊數: 標簽:php
    [CC++中超時實現] 一般在 Linux C/C++中,可以使用:alarm()設置定時器的方式實現秒級超時,或者:select()、poll()、epoll()之類的異步復用IO實現毫秒級超時。也

      [C&C++中超時實現]

      一般在LinuxC/C++中,可以使用:alarm()設置定時器的方式實現秒級超時,或者:select()、poll()、epoll()之類的異步復用IO實現毫秒級超時。也可以使用二次封裝的異步io庫(libevent,libev)也能實現。

      一、使用alarm中用信號實現超時 (秒級超時)

      說明:Linux內核connect超時通常為75秒,我們可以設置更小的時間如10秒來提前從connect中返回。這里用使用信號處理機制,調用alarm,超時后產生SIGALRM信號(也可使用select實現)

      用alarym秒級實現 connect設置超時代碼示例:

    //信號處理函數

    staticvoidconnect_alarm(intsigno)

    {

    debug_printf("SignalHandler");

    return;

    }

    //alarm超時連接實現

    staticvoidconn_alarm()

    {

      Sigfunc*sigfunc;//現有信號處理函數

      sigfunc=signal(SIGALRM,connect_alarm);//建立信號處理函數connect_alarm,(如果有)保存現有的信號處理函數

    inttimeout=5;

    //設置鬧鐘

      if(alarm(timeout)!=0){

      //...鬧鐘已經設置處理

      }

    //進行連接操作

    if(connect(m_Socket,(structsockaddr*)&addr,sizeof(addr))<0){

    if(errno==EINTR){//如果錯誤號設置為EINTR,說明超時中斷了

    debug_printf("Timeout");

    &nbs

    原文轉自:http://www.kuqin.com/web/20120808/324135.html

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>