سؤال

لقد شاركت في إنشاء تطبيق Custum QGIS الذي سيتم عرض البيانات المباشرة على عارض التطبيق.

IPC المستخدمة هي قوائم رسائل UNIX.

يجب تحديث البيانات في فاصل محدد ، 3 ثوان.

الآن المشكلة التي أواجهها هي أن معالجة البيانات التي سيتم عرضها تستغرق أكثر من 3 ثوانٍ ، لذا فإن ما فعلته هو أنه قبل أن يبدأ التطبيق في معالجة البيانات للتحديث التالي ، يتم إيقاف QTIMER من التحديث وبعد معالجة البيانات ، أعيد تشغيل QTIMER مرة أخرى. رؤية البيانات التي يتم تحديثها. أنا قادر على الحصول على توقفات مقبولة للمستخدم للعمل- في سيناريو واحد.

ولكن على نظام تشغيل مختلف (RHEL 5.0 إلى RHEL 5.2) ، فإن الموقف شيء مختلف. يمر المؤقت ويستمر في إطلاق النار دون إعطاء أي توقف مؤقتًا في التحديثات المتتالية ، وبالتالي الدخول إلى حلقة لا حصر لها. 3 ثوانٍ ، لكن لهذا السبب بالذات ، فقد توقفت عن صياغة المؤقت أثناء المعالجة .. والمنطق نفسه يعمل في سيناريو واحد بينما في الآخر لا .. الحقيقة الأخرى التي لاحظتها هي أنه عندما يكون هذا إطلاق النار السريع للموقت يحدث الوقت الذي تستغرقه الوظيفة المنعشة للخروج هو صغير جدًا ABT 300ms ، لذا فإن توقف الموقت الذي وضعته في بداية هذه الوظيفة يحدث في ذلك الوقت الصغير .. لذلك قبل المعالجة الفعلية لل تنتهي البيانات ، هناك 3-4 بدايات المؤقت في قائمة الانتظار في انتظار تنفيذها ، وبالتالي تزداد مشكلة الحلقات اللانهائية من تلك النقطة لكل تحديث متتالي.

الشيء المهم الذي يجب ملاحظته هنا هو أنه بالنسبة لنفس الرمز في نظام التشغيل ، يظهر وقت التحديث على أنه حوالي 4000 مللي ثانية (وقت المعالجة الفعلي المستغرق لنفس كمية البيانات) بينما لنظام التشغيل الآخر 300 مللي ثانية.

ربما يكون لهذا علاقة مع libs الأحدث على نظام التشغيل المحدثة .. لكنني لا أعرف كيفية تصحيحه لأنني غير قادر على الحصول على أي أدلة لماذا يحدث على هذا النحو ... ربما يكون شيء يتعلق بـ pthreads قد تغير b/w OSS ؟؟

لذا ، فإن استعلامي هو أن هناك أي طريقة ستؤكد أن بعض المعالجة في تطبيقي يتم توقيتها (وهو مستقل عن نظام التشغيل) دون استخدام QTIMER كما أعتقد أن QTIMER ليس خيارًا جيدًا لتحقيق ما أريد ؟؟

ما الخيار الذي يمكن أن يكون هناك ؟؟ pthreads أو تعزيز المواضيع؟ أيهما سيكون أفضل إذا كنت سأستخدم المواضيع كبديل؟ لكن كيف يمكنني التأكد من ATLEAST A على الأقل A GAP B/W تحديثات متتالية بغض النظر عن المدة التي تستغرقها معالجة التحديث؟

رجاء، المساعده.

شكرًا.

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

المحلول

إذا كنت أحاول الحصول على حل مقبول وطويل الأجل ، فسوف أقوم بتحديث شاشة العرض في موضوع منفصل. في هذا الموضوع ، يمكنك طلاء الشاشة على صورة ما ، حيث يتم تحديثه كلما رغبت في ذلك ... على الرغم من أنك قد ترغب في خنق الخيط حتى لا يستغرق كل وقت المعالجة المتاح. ثم في موضوع واجهة المستخدم ، يمكنك قراءة تلك الصورة ورسمها على الشاشة. يمكن أن يحسن استجابتك للتصنيع ، حيث يمكنك عرض أجزاء مختلفة من الصورة. يمكنك تحديث الصورة كل 3 ثوانٍ استنادًا إلى مؤقت (فقط إعادة رسم من المصدر) ، أو يمكن أن يكون لديك مؤشر ترابط آخر ينبعث منه إشارة كلما تم تحديث البيانات الجديدة تمامًا.

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