본문으로 바로가기

[C] curl 라이브러리 thread safe

category 프로그래밍/C 2023. 7. 13. 11:16
728x90
반응형

curl을 사용하면 가벼운 프로그램을 제외하고 대부분은 multi thread 기반의 설계를 할 것입니다.

curl 라이브러리는 기본적으로 thread safe에 대해서 보장을 해주지 않을 수 있습니다.

정확하게 원인을 파악해보지는 않았지만, curl은 multi thread로 동작하게 되면 비슷한 에러가 발생하는 경우가 많았습니다.

여러 쓰레드에서 동일한 핸들을 사용할 경우에 이러한 문제가 발생하는 경우가 많습니다.

lock, unlock을 사용할 수 있지만, 그에 대한 성능이 떨어질 수 밖에 없습니다.

물론 발생을 안하는 경우가 있지만, 한번씩 발생하는 에러를 막기 위해서는 그에 대한 설정이 필요합니다.

바로 CURL의 NOSIGNAL 옵션입니다.

curl 사이트에도 나와있듯이, 모든 signal을 건너띄게 됩니다.

signal에 의하여 문제가 생겨 segmentfault가 발생할 수 있기때문에, signal을 건너뛰게되면 당장은 문제를 해결할 수 있습니다.

사용법은 아래와 같습니다.

----------------------------------------------------------------------------------------------------

curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);

----------------------------------------------------------------------------------------------------

제 기준에서는 curl을 사용할 경우, 안전성을 위해서 위의 옵션을 무조건 사용한다라고 생각하시면 될 것같습니다.

728x90
반응형