私はusleep()
、メインプロセスからスレッドに信号を送信して、時々スリープを中断したいと考えています。
問題は、どの信号を正確に送信するかの参照が見つからないことですpthread_kill()
usleep()マニュアルページには、一緒SIGALRMに使用してはならないことが記載されていますusleep()
特定の信号を使用する必要がありますか?
スレッド間で同期するためのツールは、シグナル およびusleep(または) ではなく、およびnanosleepの組み合わせです。条件でスレッドを待機させ(これはタイムアウトで実行できます)、条件変数でスレッドに「シグナル」を送信させます。pthread_mutex_tpthread_cond_tmain
usleepEINTRスレッド/プロセスに配信されるすべてのシグナルで戻ります。SIGUSRおそらく、シグナルを使用するのが最善でしょう。
また、usleep現在は廃止されていnanosleepます。代わりに使用することを検討してください。追加のボーナスとして、信号の配信時に残りのスリープ時間がわかります。