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