نمایش نتایج 1 تا 5 از 5

نام تاپیک: اجرای تسک در ساعت خاص(میلی ثانیه)

  1. #1

    اجرای تسک در ساعت خاص(میلی ثانیه)

    دوستان من روی یک پروژه دارم کار میکنم که یه بخشیش رو میخوام در ساعت 2 شب برحسب میلی ثانیه یک یا چند تسک بصورت همزمان شروع بشه میخوام دقیقا تسک ها سرموقع شروع بشن مثلا ساعت 2:00:00.200، 2:00:00.400، 2:00:00.600 دقیقا سر میلی ثانیه هایی که تعیین کردم انجام بشه حتی اگر تسک ها چند دقیقه طول کشیدن. پرفرومنس هم خیلی مهمه اینکه از منابع مثل cpu بصورت بهینه استفاده بشه. کسی ایده یا نمونه کدی نداره؟ خودم از quartz استفاده کردم ولی شروعش دقیق نبود و نمیدونم چجوری بهش میلی ثانیه بدم خیلی وقته با سی شارپ کار نکردم

  2. #2

    نقل قول: اجرای تسک در ساعت خاص(میلی ثانیه)

    نقل قول نوشته شده توسط sunboymn مشاهده تاپیک
    دوستان من روی یک پروژه دارم کار میکنم که یه بخشیش رو میخوام در ساعت 2 شب برحسب میلی ثانیه یک یا چند تسک بصورت همزمان شروع بشه میخوام دقیقا تسک ها سرموقع شروع بشن مثلا ساعت 2:00:00.200، 2:00:00.400، 2:00:00.600 دقیقا سر میلی ثانیه هایی که تعیین کردم انجام بشه حتی اگر تسک ها چند دقیقه طول کشیدن. پرفرومنس هم خیلی مهمه اینکه از منابع مثل cpu بصورت بهینه استفاده بشه. کسی ایده یا نمونه کدی نداره؟ خودم از quartz استفاده کردم ولی شروعش دقیق نبود و نمیدونم چجوری بهش میلی ثانیه بدم خیلی وقته با سی شارپ کار نکردم
    این موارد رو در نظر بگیرید:
    اولا سیستم عامل ویندوز یک Real-time operating system یا RTOS نیست، برای همین اینکه بخواهید کدی در فلان لحظه اجرا بشه به این معنی نیست که سیستم عامل تمامی پروسه ها و نخ های در حال اجرا رو در اون لحظه متوقف کنه تا کد شما اجرا بشه. بنابر این تاخیر در اجرا با توجه به میزان ترافیک صف پردازه ها و شرایط سیستم غیر قابل اجتناب ئه، گر چه تاخیر اندک باشه.

    ثانیا سیستم عامل برای پاسخگویی به خود برنامه شما باید فعالیت هایی انجام بده که طبعا نیاز به پردازنده داره، یعنی در خلال پاسخگویی به تسک های برنامه شما پردازنده باید کد هایی رو اجرا کنه که شما ننوشته اید. پس نباید توقع داشت که به تسک بعدی دقیقا در زمان دلخواهش منبع پردازنده برسه، ممکنه قدری منتظر بمونه.

    ثالثا کارایی و بهینه بودن روال های برنامه شما به الگوریتم ها و معماری برنامه تون وابسته است و با صرفا چند تا سوال و جواب ساده نمیشه نتیجه مطلوبی گرفت.

    رابعا اگر بخواهید کاری تا حد امکان نزدیک به زمان x انجام بشه، بهتره که برای قدری زودتر، مثلا برای 20 ثانیه زودتر از x درخواست اجرا شدن تسک مورد نظر رو بدید و بعد در داخل همون نخ که قراره تسک رو اجرا کنه با یکی دو حلقه به دقت زمان رو بررسی کنید تا لحظه مورد نظر x برسه. اینطوری تاخیر در اجرای تسک رو تا حد زیادی بی تاثیر می کنید. اما با این وجود در نظر بگیرید که پردازنده دائما متعلق به نخ برنامه شما نمیمونه، حتی اگر اولویت اجرای پروسه (Priority) در حالت Realtime باشه. اگر در Task Manager اولویت اجرای Realtime رو می بینید، اون عبارت فریب تون نده، در سیستم عاملی که RTOS نیست Realtime یک مفهوم نسبی است، حقیقتا Realtime نمیشه، صرفا اسمی است برای بالاترین اولویت اجرا.

    var x = DateTime.Today.Add(new TimeSpan(0, 2, 0, 0, 200)); // 2:00:00.200
    while (x.Subtract(DateTime.Now).TotalSeconds > 1)
    {
    System.Threading.Thread.Sleep(100);
    }
    while (x > DateTime.Now)
    {
    }
    // Your task code start here
    .
    .
    .

  3. #3

    نقل قول: اجرای تسک در ساعت خاص(میلی ثانیه)

    ممنون از پاسخگویتون دوست عزیز. این همه بحث تخصصی لازم نبود همه این مواردی که گفتین در شرایطی هستش که cpu مشغول باشه نه اینکه فقط 8تا 10 درصدش مشغول باشه. من یه برنامه تحت ویندوز دیدم که این کار رو انجام میداد به مواردی که گفتین هم بستگی نداشت. تاخیر اجرا هم در حد 1 تا 3 میلی ثانیه داشت! به هرحال ممنون از پاسختون

  4. #4

    نقل قول: اجرای تسک در ساعت خاص(میلی ثانیه)

    نقل قول نوشته شده توسط sunboymn مشاهده تاپیک
    ممنون از پاسخگویتون دوست عزیز. این همه بحث تخصصی لازم نبود همه این مواردی که گفتین در شرایطی هستش که cpu مشغول باشه نه اینکه فقط 8تا 10 درصدش مشغول باشه. من یه برنامه تحت ویندوز دیدم که این کار رو انجام میداد به مواردی که گفتین هم بستگی نداشت. تاخیر اجرا هم در حد 1 تا 3 میلی ثانیه داشت! به هرحال ممنون از پاسختون
    اون جمله "میخوام دقیقا تسک ها سرموقع شروع بشن" در سوال تون من رو به اشتباه انداخت که میخواهید تسک ها دقیقا سر موقع شروع بشوند، وگرنه اگر می گفتید نمیخوام تسک ها دقیقا سر موقع شروع بشوند و چند میلی ثانیه تاخیر در اجرا ایرادی نداره قضیه فرق می کرد. ساعت 2:00:00.200 با 2:00:00.201 و 2:00:00.202 و 2:00:00.203 چند زمان متفاوت ئه.

  5. #5

    نقل قول: اجرای تسک در ساعت خاص(میلی ثانیه)

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    اون جمله "میخوام دقیقا تسک ها سرموقع شروع بشن" در سوال تون من رو به اشتباه انداخت که میخواهید تسک ها دقیقا سر موقع شروع بشوند، وگرنه اگر می گفتید نمیخوام تسک ها دقیقا سر موقع شروع بشوند و چند میلی ثانیه تاخیر در اجرا ایرادی نداره قضیه فرق می کرد. ساعت 2:00:00.200 با 2:00:00.201 و 2:00:00.202 و 2:00:00.203 چند زمان متفاوت ئه.
    بله حق با شماست. من خودم یه چیزایی نوشتم ولی بغد از ون بار اجرا حدودا هفت هشت بار به هم میخوره و تایم هایی که اجرا میشن قاطی میشه. شما راهکاری سراغ ندارین

تاپیک های مشابه

  1. حرفه ای: تسهیم حساب بانکی
    نوشته شده توسط nimamidos در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: سه شنبه 17 آذر 1394, 17:02 عصر
  2. سوال: اندازه گیری MI تسک ها ی موجود در صف
    نوشته شده توسط shahmohammadi در بخش توسعه‌ی هسته‌ی سیستم عامل
    پاسخ: 1
    آخرین پست: جمعه 24 بهمن 1393, 15:28 عصر
  3. تسهیلات، جدول تسهیلات، طراحی تسهیلات
    نوشته شده توسط mhsmity در بخش T-SQL
    پاسخ: 3
    آخرین پست: سه شنبه 26 فروردین 1393, 10:39 صبح
  4. سوال: مشکلات ریچ تسکت باکس
    نوشته شده توسط webpooyan در بخش ابزارهای گزارش سازی
    پاسخ: 0
    آخرین پست: جمعه 24 آبان 1392, 16:08 عصر
  5. مشکل با پانل و تسک بار در kde
    نوشته شده توسط tux-world در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 2
    آخرین پست: چهارشنبه 28 آذر 1386, 17:20 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •