سؤال

QThread::terminate() تنص الوثائق على أنه يتم تثبيطه لإنهاء مؤشر ترابط عن طريق الاتصال بهذه الوظيفة.
في برنامجي، أحتاج إلى إنهاء مؤشر ترابط قبل انتهاء التنفيذ. يخضع الخيط بعض الحسابات الثقيلة وأريد أن يكون لدى المستخدم التحكم في إيقاف الحساب.
كيف يمكنني أن أفعل ذلك بدلا من الاتصال QThread::terminate()?

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

المحلول

قم بتعيين علامة من خارج الخيط الذي يتم فحصه بواسطة الحساب داخل الخيط وإيقاف الحساب إذا تم تعيين العلم.

نصائح أخرى

استخدام الأعلام هو الطريقة الواضحة والأكثر شيوعا للقيام بالحيلة، ولكن إذا كنت تعمل على منصة Linux / Unix، فسوف أنصحك باستخدام الأنابيب بدلا من ذلك. كان لدي نفس المشكلة حيث استخدمت العلم (هذا يجعل التعليمات البرمجية Therrunsafe، والأخطاء الناشئة عن هذه العلامة من الصعب تتبعها)، ثم غيرت التنفيذ لاستخدام الأنابيب التي كانت طريقة فعالة للقيام بفعال.

إذا كنت تريد، للحصول على منصة Linux، يمكنني أن أظهر لك كيفية استخدام الأنابيب لإنهاء Qchead.

قد يكون لديك أيضا نظام التشغيل Windows ما يعادل الأنابيب، والتي لا أعرفها كثيرا كما لم أفعل الكثير من البرمجة على منصة Windows.

أتمنى أن يساعدك هذا

الأفضل هو استخدام Flag + Mutex الذي سيجعل خيط الحلول آمنة.

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