é¦å
æ¥è§£éåæ¥åå¼æ¥çæ¦å¿µ,è¿ä¸¤ä¸ªæ¦å¿µä¸æ¶æ¯çéç¥æºå¶æå
³.
举个ä¾å,æ¯å¦æå»é¶è¡åçä¸å¡,å¯è½éæ©æéçå,ä¹å¯è½åä¸ä¸ªå°çº¸æ¡ä¸é¢ææçå·ç ,çå°æå°æè¿ä¸å·æ¶ç±æå°ç人éç¥æè½®å°æå»åçä¸å¡äº.
åè
(æéçå)å°±æ¯åæ¥çå¾
æ¶æ¯,èåè
(çå¾
å«äººéç¥)å°±æ¯å¼æ¥çå¾
æ¶æ¯.å¨å¼æ¥æ¶æ¯å¤çä¸,çå¾
æ¶æ¯è
(å¨è¿ä¸ªä¾åä¸å°±æ¯çå¾
åçä¸å¡ç人)å¾å¾æ³¨åä¸ä¸ªåè°æºå¶,å¨æçå¾
çäºä»¶è¢«è§¦åæ¶ç±è§¦åæºå¶(å¨è¿éæ¯æå°ç人)éè¿æç§æºå¶(å¨è¿éæ¯åå¨å°çº¸æ¡ä¸çå·ç )æ¾å°çå¾
该äºä»¶ç人.
èå¨å®é
çç¨åºä¸,åæ¥æ¶æ¯å¤ç就好æ¯ç®åçread/writeæä½,å®ä»¬éè¦çå¾
è¿ä¸¤ä¸ªæä½æåæè½è¿å;èå¼æ¥å¤çæºå¶å°±æ¯ç±»ä¼¼äºselect/pollä¹ç±»çå¤è·¯å¤ç¨IOæä½,å½æå
³æ³¨çæ¶æ¯è¢«è§¦åæ¶,ç±æ¶æ¯è§¦åæºå¶éç¥è§¦å对æ¶æ¯çå¤ç.
å
¶æ¬¡åæ¥è§£éä¸ä¸é»å¡åéé»å¡,è¿ä¸¤ä¸ªæ¦å¿µä¸ç¨åºçå¾
æ¶æ¯(æ æè°åæ¥æè
å¼æ¥)æ¶çç¶ææå
³.
继ç»ä¸é¢çé£ä¸ªä¾å,ä¸è®ºæ¯æéè¿æ¯ä½¿ç¨å·ç çå¾
éç¥,å¦æå¨è¿ä¸ªçå¾
çè¿ç¨ä¸,çå¾
è
é¤äºçå¾
æ¶æ¯ä¹å¤ä¸è½åå
¶å®çäºæ
,é£ä¹è¯¥æºå¶å°±æ¯é»å¡ç,表ç°å¨ç¨åºä¸,ä¹å°±æ¯è¯¥ç¨åºä¸ç´é»å¡å¨è¯¥å½æ°è°ç¨å¤ä¸è½ç»§ç»å¾ä¸æ§è¡.ç¸å,æç人å欢å¨é¶è¡åçè¿äºä¸å¡çæ¶åä¸è¾¹ææçµè¯ååçä¿¡ä¸è¾¹çå¾
,è¿æ ·çç¶æå°±æ¯éé»å¡ç,å 为ä»(çå¾
è
)没æé»å¡å¨è¿ä¸ªæ¶æ¯éç¥ä¸,èæ¯ä¸è¾¹åèªå·±çäºæ
ä¸è¾¹çå¾
.ä½æ¯éè¦æ³¨æäº,第ä¸ç§åæ¥éé»å¡å½¢å¼å®é
ä¸æ¯æçä½ä¸ç,æ³è±¡ä¸ä¸ä½ ä¸è¾¹æççµè¯ä¸è¾¹è¿éè¦æ¬å¤´çå°åºéä¼æå°ä½ äºæ²¡æ,å¦æææçµè¯åè§å¯æéçä½ç½®çææ¯ç¨åºç两个æä½çè¯,è¿ä¸ªç¨åºéè¦å¨è¿ä¸¤ç§ä¸åçè¡ä¸ºä¹é´æ¥åçåæ¢,æçå¯æ³èç¥æ¯ä½ä¸ç;èåè
,å¼æ¥éé»å¡å½¢å¼å´æ²¡æè¿æ ·çé®é¢,å 为æçµè¯æ¯ä½ (çå¾
è
)çäºæ
,èéç¥ä½ åæ¯æå°(æ¶æ¯è§¦åæºå¶)çäºæ
,ç¨åºæ²¡æå¨ä¸¤ç§ä¸åçæä½ä¸æ¥ååæ¢.
å¾å¤äººä¼æåæ¥åé»å¡æ··æ·,ææ³æ¯å 为å¾å¤æ¶ååæ¥æä½ä¼ä»¥é»å¡çå½¢å¼è¡¨ç°åºæ¥,æ¯å¦å¾å¤äººä¼åé»å¡çread/writeæä½,ä½æ¯å«å¿äºå¯ä»¥å¯¹fd设置O_NONBLOCKæ å¿ä½,è¿æ ·å°±å¯ä»¥å°åæ¥æä½åæéé»å¡çäº;åæ ·ç,å¾å¤äººä¹ä¼æå¼æ¥åéé»å¡æ··æ·,å 为å¼æ¥æä½ä¸è¬é½ä¸ä¼å¨çæ£çIOæä½å¤è¢«é»å¡,æ¯å¦å¦æç¨selectå½æ°,å½selectè¿åå¯è¯»æ¶åå»readä¸è¬é½ä¸ä¼è¢«é»å¡,就好æ¯å½ä½ çå·ç æå°æ¶ä¸è¬é½æ¯å¨ä½ ä¹åå·²ç»æ²¡æ人äº,æä»¥ä½ åå»æå°åçä¸å¡å°±ä¸ä¼è¢«é»å¡.
温馨提示:答案为网友推荐,仅供参考