• 締切済み

スレッドの一時停止と再開について

こんばんは。 VC++.NET2003でC言語にて、UDPソケットプログラミングを行っています。 A:送信端末 B:受信端末 とし、送信端末から受信端末へ各パケットにシーケンス番号を付加し1024Byteずつパケットを送信。受信端末は、送信端末からのパケットを受信するのですが、受信できなかったパケットがある場合、シーケンス番号を送信端末へ送信します。 これらから、送信端末は、送信と受信スレッドを持つ、マルチスレッドを行っています。 以下に送信端末のプログラムを示します。 main{  //受信スレッド生成  hTh = (HANDLE)_beginthreadex(NULL, 0, Sequence_Number, NULL, 0, &thID);  UDPSending(s_port,szServer);  //受信スレッド終了待ち  WaitForSingleObject( hTh, INFINITE );  CloseHandle(hTh); } //送信スレッド UDPSending(s_port,szServer){  //fread関数にて、1024Byteずつ区切る  while((n = fread(send_Buf,1,SEND_DATA_SIZE,fp)) != 0) {   UDPDataSend(s_port, szServer, send_Buff, n+mojisuu);  } } UDPDataSend(unsigned short s_port, char *szServer, char *send_Buff, int n){   sendtoにて受信端末へ送信 } //受信端末からの未受信シーケンス番号を受信(受信スレッド) unsigned __stdcall Sequence_Number(void *lpx){   recvfrom関数によりシーケンス番号を受信 } [付け加えたい機能] 送信スレッドにおいて100個のパケットを送信したら、一時的に送信スレッドを停止させ、受信スレッド内の処理を行い、受信スレッド内の処理が終えたら、再度、送信スレッドを再開させる方法はありますでしょうか? イメージでは・・・ S:送信スレッド R:受信スレッド とした場合、 S(100個パケット送信)→Sの休止→Rの処理→Rの処理が終えたら→Sの再開(再度100パケット送信)・・・・ の繰り返しです。 よろしくお願いします。

みんなの回答

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

>S(100個パケット送信)→Sの休止→Rの処理→Rの処理が終えたら→Sの再開(再度100パケット送信)・・・・ の繰り返しです。 もし、上記のようにしたいのなら、マルチスレッドでなく、シングルスレッドで、S,Rを交互に呼び出してはいかがでしょうか。

関連するQ&A

専門家に質問してみよう