2011-12-14 14 views
0

ある期間、どのようにpthread_tを停止することができますか?どのように正確なことはする必要がない)C++ pthread_t - 一定期間pthread_tを停止する方法

+0

アイドルカウントしますか? – Mikhail

+0

私は可能性があります。それはどんな種類の可能性を気にしませんが、ただの睡眠はありません。 –

+0

@TobiWeißhaar:なぜ眠れない? – GManNickG

答えて

1

スレッドをブロックするためにpthread_cond_wait(またはpthread_cond_timedwaitですが、おそらくそうではありません)を使用してください。スレッドが実行するか停止するかを示す値を保持する変数である述語が必要です。また、述部と条件変数を保護するためには、ミューテックスが必要です。別のスレッドは、mutexを取得し、述語を変更し、条件変数を通知し、mutexを解放することによってスレッドをブロック解除できます。

しかし、一般的に、これを行うべきではありません。何かするべきことがあれば、あなたはスレッドにそれをさせるべきです。何もする必要がなければ、スレッドは終了するか、または作業を待つようにコード化する必要があります。特定のコードでこれを強制しなければならない場合は、最初は何か間違っている可能性が高いです。

スレッドは、あなたがしたいことをすべて実行するようにコーディングする必要があります。あなたは本当に珍しい状況を除いて、外部から「押し回す」必要はありません。

-1

ホイアン、

;?と私はスリープ機能の使用を意味しませんか最初のスレッドが停止するとすぐに別のスレッドの開始を検討することができます。この新しいスレッドは特定の時間実行され、スレッド番号1が再起動されます。 停止が一度だけ必要な場合は、カウンタを追加できます。

これをすべて繰り返す必要がある場合は、定期的に時刻をトリガするpthreadも考えてください。

よろしく、 G.

1

あなたのスレッド実装ライブラリがサポートしている場合は、メインスレッドまたは「眠っている時間カウント」のいずれかの種類を使用して別の1からpthread_suspendpthread_continueを使用することができます。

通常の使用についてのマニュアルページを参照してください。

0

あなたはタイムアウトでスレッドハンドル自体を待つことができます...スレッドハンドルは、スレッドが終了すると通知され、実行中にタイムアウトします。

0

あなたの質問はむしろ非特異的です。いくつかのアプローチがありますが、それは達成したいことに依存します。 スレッドを中断しますか?特定の基準が満たされるまで、スレッドが実行をブロックするポイントを持っていますか? スレッドを停止できるユーザーは誰ですか?誰がその操作を再開できるはずですか?

いくつかの可能性が含まれます:

関連する問題