libcurl-share - how to use the share interface


DESCRIPTION

       This is an overview on how to use the libcurl share inter-
       face in your C programs. There are specific man pages  for
       each function mentioned in here.

       All  functions  in  the  share interface are prefixed with
       curl_share.



OBJECTIVES

       The share interface was added to enable  sharing  of  data
       between curl "handles".


ONE SET OF DATA - MANY TRANSFERS

       You  can  have  multiple  easy  handles share data between
       them. Have them update and use the same cookie database or
       DNS cache! This way, each single transfer will take advan-
       tage from data updates made by the other transfer(s).


SHARE OBJECT

       You create a  shared  object  with  curl_share_init().  It
       returns a handle for a newly created one.

       You  tell the shared object what data you want it to share
       by using curl_share_setopt(). Currently you can only share
       DNS and/or COOKIE data.

       Since  you  can  use this share from multiple threads, and
       libcurl has no internal thread synchronization,  you  must
       provide  mutex  callbacks  if  you're  using  this  multi-
       threaded.  You  set  lock  and   unlock   functions   with
       curl_share_setopt() too.

       Then,  you  make an easy handle to use this share, you set
       the CURLOPT_SHARE option with curl_easy_setopt,  and  pass
       in  share  handle. You can make any number of easy handles
       share the same share handle.

       To make an easy handle stop using that  particular  share,
       you  set  CURLOPT_SHARE  to  NULL for that easy handle. To
       make a handle stop sharing  a  particular  data,  you  can
       CURLSHOPT_UNSHARE it.

       When  you're  done using the share, make sure that no easy
       handle is still using it, and call curl_share_cleanup() on
       the handle.


SEE ALSO

       curl_share_init(3),                  curl_share_setopt(3),
       curl_share_cleanup(3)

Man(1) output converted with man2html