NAME
curl_multi_add_handle - add an easy handle to a multi session
添加easy handle到multi session中
SYNOPSIS
#include <curl/curl.h>
CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle);
DESCRIPTION
Adds a standard easy handle to the multi stack. This function call will make this multi_handle control the specified easy_handle.
添加一个标准的easy handle到Multi stack中。
While an easy handle is added to a multi stack, you can not and you must not use curl_easy_perform on that handle. After having removed the easy handle from the multi stack again, it is perfectly fine to use it with the easy interface again.
当一个easy handle被添加到multi stack中,你不能再对这个easy handle使用curl_esay_perform。
当这个easy handle被从multi stack中移除,又可以再次对这个easy handle使用esay_curl接口了。
If the easy handle is not set to use a shared (CURLOPT_SHARE) or global DNS cache (CURLOPT_DNS_USE_GLOBAL_CACHE), it will be made to use the DNS cache that is shared between all easy handles within the multi handle when curl_multi_add_handle is called.
当调用curl_multi_add_handle时,如果easy handle没有设置使用shared (CURLOPT_SHARE),或者全局DNS缓存(CURLOPT_DNS_USE_GLOBAL_CACHE),
则会使用multi handle中的share的dns缓存。
------------------------------------------------------------------------------------------------------------------------------
When an easy interface is added to a multi handle, it will use a shared connection cache owned by the multi handle. Removing and adding new easy handles will not affect the pool of connections or the ability to do connection re-use.
当一个新的easy handle被加入到multi handle中,他会使用一个multi handle缓存的shared连接。
移除和添加easy handle不会影响连接池或者连接复用。
If you have CURLMOPT_TIMERFUNCTION set in the multi handle (and you really should if you're working event-based with curl_multi_socket_action and friends), that callback will be called from within this function to ask for an updated timer so that your main event loop will get the activity on this handle to get started.
如果multi handle设置了CURLMOPT_TIMERFUNCTION(如果你使用curl_multi_socket_action,应该设置),
回调函数会被触发
The easy handle will remain added to the multi handle until you remove it again with curl_multi_remove_handle - even when a transfer with that specific easy handle is completed.
You should remove the easy handle from the multi stack before you terminate first the easy handle and then the multi handle:
1 - curl_multi_remove_handle
2 - curl_easy_cleanup
3 - curl_multi_cleanup
RETURN VALUE
CURLMcode type, general libcurl multi interface error code.