質問: libcurlを初めて使います。 現在とあるシステムでlibcurlを使用したサーバ通信プロセスがあります。 そのシステムに新たに別のサーバの通信プロセスを追加します。 libcurlの通信タイミングが重なった時に処理的には問題ないのでしょうか? libcurlや共有ライブラリについて調べてみましたが分かりませんでした。 ご助力下さい。 環境はlinuxです。 1既にあるサーバ通信プロセスでは、CURLOPT_PORTでの指定は行っていませんでした。 2新しく作成するサーバ通信プロセスでは、1で使用しているポートと別のポートをCURLOPT_PORTで指定しなければならないのでしょうか?
回答: WikipediaのcURLによるとlibcurlはスレッドセーフです。 ただしcurl_setoptに記載されているように、一部のオプション(処理)はスレッドセーフではないようです。 まずは以下が参考になるかと思います。 libcurlをスレッドで使うためには、curl_easy_setoptでCURLOPT_NOSIGNALを指定する必要があるみたい なお当然ですが、一般的にライブラリ(libcurl)の管理外の処理(取得した結果を同一ファイルに出力など)は、呼出側で適切に競合制御をおこなう必要があります。 ポートに関する質問の追記について 接続サーバのプロトコルなど詳細が不明ですが、基本的にクライアント(curl)側が心配することではないと思います。 たとえば1マシンで複数ブラウザを立ち上げ、同じHTTPサーバ(ポート番号も同じ)に同時にリクエストをかける状況と同じです。