国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

[轉(zhuǎn)載]0x01 非阻塞和阻塞

admin

一些有志青年可能最近手刃了Workerman源碼,對于里面那一大坨stream_select()、stream_socket_server()表示疑惑,這個玩意和socket_create、socket_set_nonblock()有啥區(qū)別

<?php
// 創(chuàng)建一個監(jiān)聽socket,這個一個阻塞IO的socket
$listen = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
socket_bind( $listen, '0.0.0.0', 9999 );
socket_listen( $listen );
while( true ){
  // socket_accept也是阻塞的,雖然有while,但是由于accpet是阻塞的,所以這段代碼不會進(jìn)入無限死循環(huán)中
  $connect = socket_accept( $listen );
  if( $connect ){
    echo "有新的客戶端".PHP_EOL;
  } else {
    echo "客戶端連接失敗".PHP_EOL;
  }
}

截圖

<?php
// 創(chuàng)建一個監(jiān)聽socket,將其設(shè)置為非阻塞
$listen = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
socket_bind( $listen, '0.0.0.0', 9999 );
socket_listen( $listen );
// ???????????? 這里設(shè)置非阻塞!
socket_set_nonblock( $listen );
while( true ){
  $connect = socket_accept( $listen );
  if( $connect ){
    echo "有新的客戶端".PHP_EOL;
  } else {
    echo "客戶端連接失敗".PHP_EOL;
  }
}

截圖

在監(jiān)聽socketIO的時候,設(shè)置為阻塞模式,只有當(dāng)新用戶連接時觸發(fā)繼續(xù),在無新用戶時,整個進(jìn)程阻塞。

當(dāng)設(shè)置為非阻塞模式中,會一直執(zhí)行while循環(huán),CPU100% ,無論有無新用戶。

文章來自:
http://t.ti-node.com/thread/6445811932254437377

1681 0 0
0個評論

年代過于久遠(yuǎn),無法發(fā)表評論

admin

6404
積分
0
獲贊數(shù)
0
粉絲數(shù)
2021-08-06 加入
??