ورود

نسخه کامل مشاهده نسخه کامل : ارسال عدد و ساختن ترد



Life24
10-03-2013, 23:38
سلام

میخواهم یک عدد از ورودی بگیرم به دلخواه کاربر
به اندازه اون ترد ایجاد کنم و ترد ها مشغول کنم به انجام یک کار الکی.
مثلا یک تابع هم نوشتم و همه ترد ها میرن سراغ اون تابع.
شاید طرف 10 وارد کرد شاید 100
دیگه 100 بار نیام تعریف کنم ترد و Start بنویسم.
البته بعدش با این ترد ها که ایجاد شدند. کار دارم. :n13:

senaps
11-03-2013, 00:10
فکر کنم هدف از بکار بردن حلقه ها هم همین مسئله باشه...!!!
فقط اینکه چه مقدار از کد رو داخل حلقه قرار میدین هم مسئله‌ای هستش...!!!!
این که یه ترد بسازید و ان بار شی ازش بسازید، یا اینکه ان تا ترد با هر کدوم یه دونه شی بسازید تعداد کد های داخل حلقه رو مشخص میکنه!‌::)

Life24
11-03-2013, 09:42
فکر کنم هدف از بکار بردن حلقه ها هم همین مسئله باشه...!!!
فقط اینکه چه مقدار از کد رو داخل حلقه قرار میدین هم مسئله‌ای هستش...!!!!
این که یه ترد بسازید و ان بار شی ازش بسازید، یا اینکه ان تا ترد با هر کدوم یه دونه شی بسازید تعداد کد های داخل حلقه رو مشخص میکنه!‌::)

سلام درسته حلقه
بیائیم یک حلقه بزاریم تا 20 تا بعد بره ایجاد کنه و شروع کنه
اما بعد از حلقه چطور بهش دسترسی داشته باشیم؟
حلقه ما با i جلو میره و ترد ها استارت میزنه حالا بعد از حلقه بخواهیم همین i که مثلا مورد 6 رو دسترسی داشته باشیم.
اون وقت نمی شناسه.
من می خواهم کلی از این ترد تو برنماه استفاده کنم . استارت و استوپ کنمشون.

senaps
11-03-2013, 10:35
حلقه ها یه سری حالت استاپ و گذر کردن و .... دارن! :)
اون سوالتون در مورد دسترسی به I رو متوجه نشدم! حقیقتش.... میشه کمی بیشتر توضیح بدین که مشکلش چیه؟

Life24
11-03-2013, 11:05
حلقه ها یه سری حالت استاپ و گذر کردن و .... دارن! :)
اون سوالتون در مورد دسترسی به I رو متوجه نشدم! حقیقتش.... میشه کمی بیشتر توضیح بدین که مشکلش چیه؟

خوبی اقا؟ ببخشید مزاحم شدم.
ببنید ما میخواهیم تردینگ کار کنیم میگیم مثلا
Thread a = new Thread (b )
که اینجا a متغیر هست و b هم تابع ما.
بعد میگیم a.start()
خوب این دستی هست. فرض ما بخواهیم N نا مشخص و از کاربر بگیریم طرف شاید زد 17 شاید زد 30
ما دیگه دستی کار نکنیم خودش بره برامون متغیر بسازه و Start رو بسازه.
یک راه شما فرمودید حلقه درسته
for (int i=1 ; i<=30 ; i++ )
)
ترد رو تو بدنه این بسازیم و start بزنیم درسته؟ کار هم میکنه . اما بعد از این بدنه بخواهیم ترد دسترسی داشته باشیم و روش کار کنیم نمیشه.
یعنی من نتونستم.
میخوام داینامیک باشه. به واسطه همین باید ترد ها رو stop و sleep و ... این کارا کنم.
یعنی اگر 15 تا ترد کاربر زد دقیقا این 15 تا باید بعد برم سراغشون. یعنی برنامه بره

Msba
11-03-2013, 17:39
سلام.
می خواهم یک استفاده ای عجیب رو از دو مفهوم Thread و delegate رو نشان بدهم که کارگشای مشکل نیز هست:
به این مثال دقت کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در ابتدا یک آرایه Thread تعریف کردیم که طول آرایه توسط کاربر تعیین می شود.
از آنجایی که هر Thread یک تابع را اجرا می کند پس اگر من بخواهم مجموعه ای متفاوت از متد ها داشته باشم پس می بایست تا آرایه ای از متد ها نیز داشته باشم پس با Delegate (نه delegate) یک آرایه می سازم و سپس با delegate یک الگو برای متد هام تعریف می کنم.
در اینجا من همه ی متد هام رو یکی تعریف کردم اما شما با این روش می تونید متد های مختلف رو پاس دهید.
در یک حلقه هم شروع می کنم به نام گذاری و مشخص نمودن وضعیت Thread ها.

در یک مثال قشنگتر نیز:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای دسترسی به هر Thread نیز کافیه تا آرایه رو با index مورد نظر مورد دسترس قرار دهید.

نکته: استفاده از چنین روش هایی در تعداد بالای Thread به علت پیچیدگی اجرا در CPU پیشنهاد نمی گردد زیرا که تعداد Thread بالا باعث کاهش سرعت پردازش در هر Thread خواهد شد و راندمان را به صورت چشم گیری کاهش خواهد داد.

موفق باشید.

senaps
12-03-2013, 01:25
از دلیگیت ها متنفرم! :) با تشکر از شما...
فرق دو دلیگیت رد چیه؟!(بزرگ و کوچیک!)...

Msba
14-03-2013, 19:12
پاسخ شما را در این بخش ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) خواهد بود.

موفق باشید.