由於libcurl的是線程安全的,因爲從它的官方documentation說:替代工作方法錯了,它使用捲曲把手在多線程
的libcurl是線程安全的,但...
其中還說:
把手。您絕不能在多個線程中共享相同的句柄。您可以在線程之間傳遞句柄,但是在任何給定時間,您絕不能使用來自多個線程的單個句柄。
所以在多個線程上創建單個句柄並使它們(句柄)同步將無法工作。
我該如何獲得這樣一種替代的,高效的和便宜的HTTP請求方式(通常也是這樣POST和GET請求)呢?
由於libcurl的是線程安全的,因爲從它的官方documentation說:替代工作方法錯了,它使用捲曲把手在多線程
的libcurl是線程安全的,但...
其中還說:
把手。您絕不能在多個線程中共享相同的句柄。您可以在線程之間傳遞句柄,但是在任何給定時間,您絕不能使用來自多個線程的單個句柄。
所以在多個線程上創建單個句柄並使它們(句柄)同步將無法工作。
我該如何獲得這樣一種替代的,高效的和便宜的HTTP請求方式(通常也是這樣POST和GET請求)呢?
至少對我而言,這聽起來像是你錯誤地解釋了文件。
您可以在每個需要發出請求的線程中創建一個單獨的句柄,並且該線程可以通過該句柄(安全地)發出請求。
您可以創建一個句柄,並在多個線程之間共享它,但是您需要同步訪問,因此只有其中一個線程在任何給定時間發出請求。實現這一點的顯而易見的方法是通過一個互斥體來保護句柄,這個互斥體在呼叫之前需要被獲取,並且一直保持到呼叫完成。
爲了簡單起見,您可能希望在每個將要進行卷曲調用的線程中創建一個單獨的句柄。至少在我閱讀文檔時,只要每個線程使用一個不能/不會被另一個線程同時使用的獨立句柄,那麼你就很安全。
_「,因此在多個線程上創建單個句柄並使它們(句柄)同步將無法工作。」_你如何解釋這個?我讀過它,同步使用句柄與互斥或類似應該工作正常。 –
我不知道你指的是哪個來源。通常'std :: mutex'和OpenSSL連接並不直接相關。 –