چهار عدد ساعت را به گونهای طراحی کنید که بر روی چهار thread مجزا، زمان چهار کشور متفاوت را نشان دهند. این ساعتها دارای اولویتهای متفاوت هستند برای مثال در یک لحظه خاص ممکن است ساعت شمارهی یک، اولویت بیشتری نسبت به ساعتهای دیگر داشته باشد و در چند لحظهی بعد ممکن است ساعت شمارهی سه اولویت بیشتری نسبت به سایر ساعتها داشته باشد (دقت کنید که زبان برنامهنویسی که استفاده میکنید باید قابلیت اولویت بندی threadها را داشته باشد). برای تست این برنامه میتوان یک process سنگینی را اجرا کرد به گونهای که میزان استفاده از CPU را ۱۰۰٪ کند. در این شرایط، ساعتی که بیشترین اولویت را دارد باید همچنان بیوقفه به کار خود ادامه دهد اما ساعتهایی که اولیت کمتری دارند باید thread خود را متوقف کنند تا ساعت با اولویت بیشتر بتواند بدون مشکل کار کند. زمانی که میزان استفاده از CPU به زیر ۹۰٪ آمد ساعتی که اولویت دوم را دارد شروع به کار میکند و اگر کمتر از ۷۰٪ شد، هر چهار ساعت دوباره شروع به کار میکنند.
برای این کار میتوانید از Real time Java
و یا thread_priority در Rust
استفاده کنید. البته این دو مورد فقط پیشنهاد هستند. شما میتوانید از هر زبانی که قابلیت اولویت بندی thread را داشته باشد استفاده کنید.
۱. به دلیل اینکه شما برنامه خود را بر روی یکی از سیستمعاملهای مدرن (Windows, Mac, Linux) اجرا میکنید، ممکن است حتی با ۱۰۰٪ شدن میزان استفاده از CPU هم هیچکدام از ساعتها دچار مشکل نشوند و اصلا نیازی به متوقف کردن هیچکدام از ساعتها نباشد اما به هرحال ما فرض میکنیم که این برنامه بر روی یک سیستم نهفته با سختافزار محدود و یک RTOS درحال اجرا است درنتیجه باید ساعتهایی که اولویت کمتری دارند را متوقف کنید.
۲. لطفا حتما از زبانها و ابزارهایی استفاده کنید که قابلیت اولویتدهی به thread داشته باشند (صرفا threadها را دستی stop و resume نکنید. threadها باید دارای اولویت باشند).
۳. اگر ساعتها گرافیکی باشند و threadهایی که وظیفه نمایش ساعت بصورت گرافیکی دارند را اولویت بندی کنید (مثلا thread که مسئول نگه داشتن زمان در یک ساعت است همچنان کار کند اما thread که مسئول نمایش ساعت بصورت گرافیکی است متوقف شود) نمره امتیازی دارد.
۴. کد باید دارای داکیومنت باشد و روند کامل پیادهسازی، عملکرد و اولویت دهی به threadها شرح داده شود.