私はVoIPでプロジェクトを行っています。私はCコードでpthreadを持っています。私はpthreadsを開始し、それらの間にいくつかの睡眠を働かせる必要があります。今すぐスレッドが実行されています。サーバーからセッションが終了したら、実行中のスレッドを停止し、最初から新しいスレッドを再起動する必要があります。pthreads - スレッドの現在の実行を停止し、特定のイベント後に再起動します。
私のコードは次のようなものになります。
void *recv_thread(void *arg)
{
/*receive the multimedia data and close the recv_thread when there is no more data to receive*/
}
void *send_thread(void *arg)
{
/*send the multimedia data*/
}
send_recv_data()
{
pthread_create(thread2, NULL, send_thread, NULL);
pthread_create(thread3, NULL, recv_thread, NULL);
}
void *first_thread(void *arg)
{
/*if some condition met the start the routine for creation of two threads one for receiving and one for sending data*/
if(cond == TRUE){
send_recv_data();
}
}
main()
{
pthread_create(thread1, NULL, first_thread, NULL);
}
を私の質問は、私はそれは私にこれ以上データを送信していることを他のユーザーエージェントからのメッセージを受け取った後、私は、送信とrecvの両方を停止する必要があるということですそして最後に他の2つのスレッドの作成を担当するfirst_threadに渡されます。私はすべてのスレッドを停止すると、私は再びそれらを再起動する必要があります。私はmutexと条件変数を使ってみましたが、すべて無駄になりました。
私はこれを克服することができる方法の任意のアイデア、簡単なコードの小片が
おかげ
この投稿の更新情報 – 125369