![](/img/trans.png)
[英]can _sync_val_compare_and_swap return anything other than int?
[英]How would select() return anything other than -1, 0, or 1?
這對我來說絕對只是一個愚蠢的誤解,但是 select() 的手冊頁指出:
timeout 參數指定 select() 應阻止等待文件描述符准備就緒的時間間隔。 調用將阻塞,直到:
*文件描述符准備就緒;
*調用被信號處理程序中斷; 或者
*超時到期。
而且,那
成功時,select() 和 pselect() 返回三個返回的描述符集中包含的文件描述符的數量(即在 readfds、writefds、exceptfds 中設置的總位數),如果超時到期可能為零在任何有趣的事情發生之前。 出錯時返回-1,設置errno表示出錯; 文件描述符集未修改,超時未定義。
所以我的問題是——如果它在文件描述符准備好后立即停止阻塞,它會不會立即返回 1? 如果沒有 fds 准備好,則返回 0,否則返回錯誤並返回 -1。
顯然在實踐中它返回超過 1:重點是你應該能夠讀/寫多個 fds,對吧?
由於現代搶占式多任務的工作方式,多個描述符可能會在您的進程被喚醒之前准備就緒,並且select
調用對描述符進行計數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.