在多线程程序中使用CURL是否安全,如何使其线程安全?

时间:2017-01-26 11:11:07

标签: c++ multithreading curl

我计划使用CURL与服务器通信。此通信将作为单独的线程进行。

我有一个curl包装类,如下所示。

如果我使用这个包装类的对象与不同线程或同一线程中的不同服务器进行通信,那么它是否是线程安全的?

curl website的以下说明让我感到困惑。

  

此功能不是线程安全的。当程序中的任何其他线程(即共享相同内存的线程)正在运行时,您不能调用它。这并不仅仅意味着没有其他使用libcurl的线程。因为curl_global_init调用同样线程不安全的其他库的函数,所以它可能与使用这些其他库的任何其他线程冲突。

class curlWrapper
 { 
private:
    CURLcode curlCode;
    CURL *curlHandle;
    struct curl_slist *header = NULL;
    MemoryStruct response;

public:
    curlWrapper(){        
        curl_global_init(CURL_GLOBAL_ALL);      

    }        
    ~curlWrapper(){
        curl_global_cleanup();            
    }

    CURL* curlInit();// curl_easy_init()
    CURLcode curlClose();// curl_easy_cleanUp()

    void initializeConnection();
    void sendRequest(const char* request);
    char* getResponse();
    void setMemorytoWrite();
    void listen();
    void closeConnection();
    void setURL(const char* url);
    void setHttpHeader(const char * contentType, const char * charSet);
    void setTrace(bool trace);// If true trace will be displayd
    void curlExec();

};` 

有人可以澄清一下这种困惑吗?

语言:c ++ 操作系统:   在开发中:OS X。

在客户端:此代码将安装在客户端计算机中,这意味着他们可以使用任何操作系统。

由于

0 个答案:

没有答案