スレッドの一時停止と再開について
こんばんは。
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パケット送信)・・・・
の繰り返しです。
よろしくお願いします。