1

私はusleep() 、メインプロセスからスレッドに信号を送信して、時々スリープを中断したいと考えています。

問題は、どの信号を正確に送信するかの参照が見つからないことですpthread_kill()

usleep()マニュアルページには、一緒SIGALRMに使用してはならないことが記載されていますusleep()

特定の信号を使用する必要がありますか?

4

2 に答える 2

5

スレッド間で同期するためのツールは、シグナル およびusleep(または) ではなく、およびnanosleepの組み合わせです。条件でスレッドを待機させ(これはタイムアウトで実行できます)、条件変数でスレッドに「シグナル」を送信させます。pthread_mutex_tpthread_cond_tmain

于 2013-03-28T10:37:56.957 に答える
3

usleepEINTRスレッド/プロセスに配信されるすべてのシグナルで戻ります。SIGUSRおそらく、シグナルを使用するのが最善でしょう。

また、usleep現在は廃止されていnanosleepます。代わりに使用することを検討してください。追加のボーナスとして、信号の配信時に残りのスリープ時間がわかります。

于 2013-03-28T10:37:34.667 に答える