الوكالة الدولية للطاقة المدمجة في نفس العملية التي يتحكم فيها البرنامج
-
21-09-2019 - |
سؤال
أقوم بتشغيل برنامج اختبار وحدة التحكم C ++ Visual داخل The Daily Build. بين الحين والآخر ، سيطلق الاختبار بعض الوظائف التي تم تغييرها من قبل المطورين الآخرين بشكل غير صحيح ، وينزل إلى حلقة لا حصر لها وتعليق وبالتالي تمنع البناء.
أحتاج إلى حل هيئة مراقبة بسيطة قدر الإمكان. هذا ما توصلت إليه. في نقطة إدخال برنامج الاختبار ، أبدأ مؤشر ترابط منفصل يتواصل بشكل مستمر ويتحقق من الوقت المنقضي. إذا تم تجاوز بعض الفترة المحددة مسبقًا ، فإنها تستدعي TerminateProcess (). كود مزيف:
DWORD WatchDog( LPVOID)
{
DWORD start = GetTickCount();
while( true ) {
Sleep( ReasonablePeriod );
if( GetTickCount() - start > MaxAllowed ) {
TerminateProcess( GetCurrentProcess(), 0 );
}
}
return 0;
}
هل هذا الحل أسوأ من الوكالة الدولية للطاقة التي تم تنفيذها كبرنامج رئيسي منفصل؟
المحلول
أعتقد أنه من الأفضل تنفيذ الوكالة الدولية للطاقة كعملية منفصلة. من الأسهل إعادة استخدامه ، من الأسهل اكتشاف ما إذا كان تطبيقك قد تحطمت والحصول على رمز الإرجاع الخاص به.
لا تنتمي إلى StackOverflow