تالار گفتمان مانشت
تریدنگ و زمان بندی - نسخه‌ی قابل چاپ

تریدنگ و زمان بندی - irpersian20 - 21 اسفند ۱۳۹۱ ۰۷:۳۷ ب.ظ

سلام
من برای پیاده کردن الگوریتم های سیستم عامل باید به صورت واقعی ترد ایجاد میکنم.
حال مثلا ۱۰ تا ترد داریم و ۱۰ تا زمان مختلف برای اجرای هر کدام.
میخوام بگم ترد ۱ مدت زمان ۵ ثانیه هر چی میتونه تایع رو اجرا کنه
ترد ۲ مدت ۸ ثانیه بره تابع رو اجرا کنه و تمام بشه
دوستان راه حلتون چی هست؟ چیزی به نام Timer در تریدنگ C# ندیدم. که بخواهم به عنوان پارامتر زمان رو براش بفرستم بگم فقط مهلت اجرا ی ترد و تابع شما مثلا ۱۵ ثانیه هست.

تریدنگ و زمان بندی - irpersian20 - 22 اسفند ۱۳۹۱ ۰۱:۴۲ ق.ظ

اصلا کلا میخوام یک تایع برای مثلا ۵ ثانیه اجرا بشه و تمام . زمانی که ما مشخص میکنیم اون قدر اجرا بشه
دیگه برنامه بازهر کنار این تابع و نره سراغش.
اگر دوباره فراخوانی کردم خوب بره اجرا کنه ادامه شو (تا اونجایی که زمان بهش دادیم) اگر نه هم که هیچ.

تریدنگ و زمان بندی - irpersian20 - 22 اسفند ۱۳۹۱ ۰۵:۴۴ ب.ظ

بچه ها کسی نیست؟

RE: تریدنگ و زمان بندی - MajidManesht2012 - 22 اسفند ۱۳۹۱ ۰۶:۱۳ ب.ظ

(۲۲ اسفند ۱۳۹۱ ۰۵:۴۴ ب.ظ)irpersian20 نوشته شده توسط:  بچه ها کسی نیست؟
قدیما یه خورده با thread کار کردیم ولی زیاد یادم نیست ولی یه حس پلیسی به من میگه که این شاید بدردت بخوره:

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


تریدنگ و زمان بندی - irpersian20 - 22 اسفند ۱۳۹۱ ۰۶:۳۲ ب.ظ

سلام
نه به کار نیامد.

تریدنگ و زمان بندی - blackhalo1989 - 22 اسفند ۱۳۹۱ ۰۷:۳۴ ب.ظ

اینجا توضیح داده:http://stackoverflow.com/questions/8078365/limit-timer-thread-execution-time
میشه به جای start و abort دو تا تابع رو خودتون پیاده کنید که استیت ترد رو ذخیره و بازیابی کنن.
همینطور میشه یه حلقه رو برای زمان مشخص اجرا کنید. این رو هم با یه سرچ میشه پیدا کرد.

RE: تریدنگ و زمان بندی - Lonely Palm - 23 اسفند ۱۳۹۱ ۰۱:۲۳ ق.ظ

راستش من #C اصلا بلد نیستم ولی می دونم توی جاوا با کتابخونه SwingWorker میشه براحتی این کارو انجام داد.
با دو تا متدی که داره، doInBackground و done

تریدنگ و زمان بندی - irpersian20 - 23 اسفند ۱۳۹۱ ۰۲:۲۷ ق.ظ

سلام
مشکلی نیست. میرم تو جاوا اگر دیدم متد بهتری داره.
میشه مثالی بزنید ؟
من این چنین چیزی میخوام
For 4 sec
{
T.Start()
next
T.Abort
}

(۲۲ اسفند ۱۳۹۱ ۰۷:۳۴ ب.ظ)blackhalo1989 نوشته شده توسط:  اینجا توضیح داده:http://stackoverflow.com/questions/8078365/limit-timer-thread-execution-time
میشه به جای start و abort دو تا تابع رو خودتون پیاده کنید که استیت ترد رو ذخیره و بازیابی کنن.
همینطور میشه یه حلقه رو برای زمان مشخص اجرا کنید. این رو هم با یه سرچ میشه پیدا کرد.

سلام
حلقه جالب نیست.هی بخواد چک بشه تا ببنیه رسیده به زمان تا بیاد بیرون یا نه.

تریدنگ و زمان بندی - blackhalo1989 - 23 اسفند ۱۳۹۱ ۱۰:۴۸ ق.ظ

شما اصلا اون لینکی که دادمو دیدی؟!

Thread t = new Thread(myLongThreadProc);
t.Start();
Thread.Sleep(30000);
t.Abort();

تریدنگ و زمان بندی - irpersian20 - 23 اسفند ۱۳۹۱ ۱۱:۴۷ ق.ظ

سلام
بله دیدم. اما این قطعه کد فایده نداره.
چون ترد رو استارت میکنه. بعد ترد اصلی میره حالت Sleep درنتیجه اون تابعی که قراره کار انجام بده با ترد جدید هم غیر فعال میشه.
بعد از ۳ ثانیه هم abort میکنه.

RE: تریدنگ و زمان بندی - Lonely Palm - 24 اسفند ۱۳۹۱ ۰۱:۴۴ ق.ظ

چند تا لینک اینجا میزارم که از اون راه حل java Base ای که گفتم مثال های خوبی داره
با دقت بررسی شون کنید

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


این مستنداتش هست:

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

مثال های خوبی توش داره
اگر خواستین باز مثال بیشتری ببینین ازش هم می تونین به کتاب core java مراجعه کنین.فکر کنم جلد ۱ ش