デイリービルド内でVisualC++コンソールテストプログラムを実行します。時々、テストは他の開発者によって不適切に変更された関数を呼び出し、無限ループに陥ってハングし、ビルドをブロックします。
できるだけシンプルなウォッチドッグソリューションが必要です。これが私が思いついたものです。テストプログラムのエントリポイントで、継続的にループし、経過時間をチェックする別のスレッドを開始します。事前定義された期間を超えると、TerminateProcess()が呼び出されます。擬似コード:
DWORD WatchDog( LPVOID)
{
DWORD start = GetTickCount();
while( true ) {
Sleep( ReasonablePeriod );
if( GetTickCount() - start > MaxAllowed ) {
TerminateProcess( GetCurrentProcess(), 0 );
}
}
return 0;
}
このソリューションは、別のマスタープログラムとして実装されたウォッチドッグよりも悪いですか?