读取函数描述curl_multi_wakeup:在这里输入链接描述
调用此函数只保证唤醒当前(或者如果没有当前) curl_multi_poll调用,(这意味着有可能对该函数进行多次调用将唤醒相同的等待操作)。
我对“同样的等待行动”这句话感到困惑。怎么回事?
也就是说,假设在线程"A“中有一个处于事件备用模式的函数curl_multi_poll()。
例如,现在我从线程"B“和线程"C”两次调用curl_multi_wakeup()函数。
用这句话来判断会发生什么:
...function将唤醒相同的等待操作。
原来,函数curl_multi_poll -只唤醒了一次?
发布于 2021-12-31 20:32:39
curl_multi_wakeup用于与等待curl_multi_poll的线程池一起使用。
文档的意思是,如果您反复调用curl_multi_wakeup,它可能只会唤醒一个线程,而不一定每个调用curl_multi_wakeup都会唤醒一个线程。
发布于 2022-01-01 06:49:38
curl_multi_poll()是一个相对较新的调用,旨在简化等待curl_multi_poll()的“中断”线程。以下是一个很好的解释:
https://daniel.haxx.se/blog/2019/12/09/this-is-your-wake-up-curl/ 投票()是一个函数,它要求libcurl在任何涉及到的传输上等待活动--或者睡眠,并且在下一个N毫秒内不返回。 调用这个等待函数(或者使用旧的curl_multi_wait(),甚至执行select()或轮询()调用“手动”)对于一个行为良好的程序来说是至关重要的。重要的是,在没有什么可做的时候,让代码像这样进入睡眠状态,并让系统在需要工作时再次唤醒它。如果不能正确地执行此操作,就有可能在某个地方使用libcurl而不是繁忙的循环,这会使您的应用程序在运行期间使用100%的CPU。由于多种原因,这是非常不必要的,也是很糟糕的。 当..。发生了一些事情,例如,应用程序需要立即关闭,用户一直在要求一种方法来唤醒您。 curl_multi_wakeup()显式地使curl_multi_poll()函数立即返回。它被设计成可以从不同的线程中使用。
https://stackoverflow.com/questions/70545403
复制相似问题