1. In multi-threaded application, be careful never to share a curl session handle between multiple threads simultaneously.
2. Use CURLOPT_NOSIGNAL in multi-threaded application to prevent SIGALARM to be triggered in case of curl timeout. The curl_easy_perform() will return instead of being interrupted by SIGALARM. The pitfall is that there is no effective way to time out a slow name resolver in case of using synchronous name resolver.
3. Some well documented in the libcurl documentation. Start by reading
http://curl.haxx.se/libcurl/c/libcurl-tutorial.html then move on to
http://curl.haxx.se/libcurl/c/libcurl-errors.html,
http://curl.haxx.se/libcurl/c/curl_easy_setopt.html and
http://curl.haxx.se/libcurl/c/curl_easy_perform.html for the specifics.
4. Some posts talking about libcurl segmentation fault in multi-thread application due to name resolve timeout and signal
http://curl.haxx.se/mail/lib-2011-02/0275.html
http://www.mail-archive.com/curl-library@cool.haxx.se/msg07629.html