讀取函式描述 curl_multi_wakeup:在此處輸入鏈接描述
呼叫此函式只保證喚醒當前(或下如果沒有電流)curl_multi_poll呼叫,該裝置有可能多次呼叫該函式會醒來一樣 等待操作。
我對短語 - “相同的等待操作”感到困惑。怎么樣?
也就是說,假設我在執行緒“A”的事件待機模式中有一個函式 curl_multi_poll()。
例如,現在我從執行緒“B”和執行緒“C”呼叫 c??url_multi_wakeup() 函式兩次。
從這句話來看會發生什么:
...函式將喚醒相同的等待操作。
結果是函式 curl_multi_poll - 只喚醒一次?
uj5u.com熱心網友回復:
curl_multi_wakeup旨在與等待的執行緒池一起使用curl_multi_poll。
檔案說的是,如果你curl_multi_wakeup重復呼叫,它可能只會喚醒一個執行緒,不一定每次呼叫 curl_multi_wakeup 一個執行緒。
uj5u.com熱心網友回復:
curl_multi_poll() 是一個相對較新的呼叫,旨在簡化等待 curl_multi_poll() 的“中斷”執行緒。這是一個很好的解釋:
https://daniel.haxx.se/blog/2019/12/09/this-is-your-wake-up-curl/
curl_multi_poll() [是一個] 函式,它要求 libcurl 等待任何相關傳輸的活動——或者睡眠并且在接下來的 N 毫秒內不回傳。
呼叫這個等待函式(或使用舊的 curl_multi_wait() 或者甚至“手動”執行 select() 或 poll() 呼叫)對于行為良好的程式至關重要。重要的是讓代碼在無事可做時像這樣進入睡眠狀態,并在需要作業時讓系統再次喚醒它。如果未能正確執行此操作,則可能會在某處使用 libcurl 而不是 busy-loop,這可能會使您的應用程式在一段時間內使用 100% CPU。由于多種原因,這是非常不必要和糟糕的。
當......發生某些事情并且應用程式需要立即關閉時,用戶一直在尋求一種方法來進行喚醒。
curl_multi_wakeup() 顯式地使 curl_multi_poll() 函式立即回傳。它被設計為可以從不同的執行緒使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/400295.html
