質問: 下記ページでスレッドでlibcurlを使用するにはCURLOPT_NOSIGNALを設定する必要があると読みました。 libcurlをスレッドで使うためには、curl_easy_setoptでCURLOPT_NOSIGNALを指定する必要があるみたい CURLOPT_NOSIGNALを設定すると、cURL関数がプロセスにシグナルを送らなくなると認識しています。 シグナルを送らなくなるのとスレッドセーフの関係がよくわかりません。 ご教示お願いします。
回答: POSIX互換システム上での経験則として、スレッド(thread)とシグナル(singal)の併用はトラブルの元です。良くあるシナリオとしてはスレッドライブラリ内部実装でシグナルを利用しており、ユーザアプリ側のシグナル利用と干渉して誤動作やクラッシュを引き起こしたりします。 * * 註:スレッドとシグナル併用が不可という訳ではないのですが、控えた方が無難です。今回のように片方がライブラリ内部に隠蔽されている場合は、そのドキュメントに従うべきですね。