الوكالة الدولية للطاقة المدمجة في نفس العملية التي يتحكم فيها البرنامج

StackOverflow https://stackoverflow.com/questions/1951854

سؤال

أقوم بتشغيل برنامج اختبار وحدة التحكم 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;
}

هل هذا الحل أسوأ من الوكالة الدولية للطاقة التي تم تنفيذها كبرنامج رئيسي منفصل؟

هل كانت مفيدة؟

المحلول

أعتقد أنه من الأفضل تنفيذ الوكالة الدولية للطاقة كعملية منفصلة. من الأسهل إعادة استخدامه ، من الأسهل اكتشاف ما إذا كان تطبيقك قد تحطمت والحصول على رمز الإرجاع الخاص به.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top