2013-03-09 239 views
10

我使用curl發送POSTGET請求,我使用回調函數從這些請求中獲取回覆。這些callback函數是靜態成員函數,它們依次調用非靜態成員函數(您不能直接在curl中使用非靜態成員函數,因此可以使用此解決方法)。curl_easy_perform()是同步的還是異步的?

由於這些回調函數不能返回結果,我使用C++類中的屬性來存儲回覆。這一切都很好,但現在我的問題。是否curl_easy_perform()阻塞,直到整個請求被髮送並且回覆由回調函數處理或者我的程序在curl_easy_perform()之後繼續並且在收到請求的回覆時以某種方式被中斷?

對我來說,重要的是我要確保屬性中包含回覆的數據已經存在,或者有可能仍然存在此屬性中的舊數據,因爲回調函數沒有但被稱爲。

我意識到我的解釋不是很清楚,所以如果你不明白,請讓我知道,我會嘗試重新修改它。

謝謝!

+0

的回調將爲您傳遞給函數內部調用。 – 2013-03-09 14:26:14

+0

所以你的意思是我濫用詞回調函數?我只是告訴curl,當數據進來時,需要將這些數據傳遞給某個函數。我認爲這也是一個回調函數。但是你傳遞迴調函數來curl_easy_setopt()。請求的所有選項都在curl_easy_perform()之前設置。我只想知道curl_easy_perform()是否阻塞,直到請求被處理。 – Silver 2013-03-09 14:50:34

回答

11

是否curl_easy_perform()塊,直到整個請求發送和 的答覆回調函數

是處理,即正是它做什麼。

(如果您更希望非阻塞行爲,libcurl's multi interface是要走的路。)

+0

請看看我關於'curl_multi_ *'接口的問題:http://stackoverflow.com/questions/24288513/how-to-do-curl-multi-perform-asynchronously-in-c – 2014-06-18 14:54:05

相關問題