كيفية تنفيذ مؤقت في C/C ++
سؤال
أريد أن أسمي وظيفة درجة الأعمال بعد كل ساعتين. أنا لا أحصل على أي طريقة لتنفيذ نفس الشيء في C/C ++ دون استخدام حلقة الوقت. مشكلتي هي أنه لا يمكنني استخدامه بينما (1) لأن هذا لا يعيد السيطرة لمزيد من التنفيذ.
أي مؤشر في هذا التحييد يكون مفيدًا .... :)
thnaks
المحلول
في عادي C ، كنت أفكر في استخدام alarm(2)
أو setitimer(2)
المهام. بدلاً من ذلك ، تفرخ خيط وافعل الانتظار من هناك.
إذا قررت طرق الإنذار أو SetItimer ، ضع في اعتبارك أنك ستحتاج إلى كتابة معالجات الإشارات وقد تحتاج إلى حلقة إرسال للملاحظة أن الوقت قد حان لإجراء مكالمات الصيانة الدورية ، حيث تعتبر ممارسة سيئة للقيام بذلك القليل من الأشياء من داخل معالج الإشارة.
نصائح أخرى
Boost.Asio يوفر أجهزة ضبط الوقت.
للحصول على حل عام ، يمكنك بدء تشغيل مؤشر ترابط ، والذي يرسل بعض الرسائل إلى الموضوع الرئيسي بعد ساعتين.
بالنسبة إلى Linux ، يمكنك استخدام هذا:
http://linux.die.net/man/3/alarm
ثم التعامل مع إشارة sigalrm