PDA

View Full Version : مبتدی: فلسفه کار با Thread



babak_dayyani
چهارشنبه 03 شهریور 1389, 13:45 عصر
سلام دوستان.
با عرض خسته نباشید.
در کلاسی که میرم امروز استاد در رابطه با Thread حرف زد و حالا هرچی‌ پروژه رو نگاه می‌کنم نمیتونم تشخیص بدم که Thread چیکار کرده.
می‌شه خواهش کنم اگه کسی‌ میدونه...بهم بگه که کار کردن با Thread چه‌جوریه و چیکار می‌کنه...؟؟!!

mmd2009
چهارشنبه 03 شهریور 1389, 13:50 عصر
با سلام.

خب کد استادت رو بذار تا بگیم چیکار کرده.

به این (http://www.barnamenevis.org/forum/showthread.php?t=116416)لینک هم سری بزن

صباح فتحی
چهارشنبه 03 شهریور 1389, 13:52 عصر
یک مثال ساده:به مدت 2ثانیه در شروع برنامه تاخییرایجاد میکنه:
ابتدا اینو بالا اضافه کن:
using System.Threading;
سپس در فرم لود اینو بنویس:

Thread.Sleep(2000);
موفق باشی

babak_dayyani
چهارشنبه 03 شهریور 1389, 15:21 عصر
کد ها رو میفهمم...ولی توی فلسفه ی کاری که می کنه موندم.
اصلا چیکار میکنه ؟
و به چه دردی میخوره ؟
thread رو میگم هاا...
ممنون از همه ی دوستان...

vandermond
چهارشنبه 03 شهریور 1389, 15:33 عصر
دوست عزيز
Thread كاري كه ميكنه اينه كه هر وقت CPU بهش سر زد، كدهاي خودشو اجرا ميكنه و ادامه كارش رو ميده. مثلا اگه شما دوتا Thread داشته باشيد و مثلا يكي شون از 1 تا 1000 رو بخاد چاپ كنه و يكي ديگه از 10000تا 11000. در اينصورت وقتي شما Thread ها رو فعال ميكنيد، در حالت عادي CPU هر 1 ميلي ثانيه مياد و هر تريد رو چك ميكنه ولي در حالت عادي هيچ نظمي نداره و مثلا ممكنه اولش 5 تا از تريد اول چاپ كنه بعد 10 تا از تريد دوم بعد 13تا از تريد اول و .... (غيرمنظم). (چون كارهاي ديگه سيستم هم هست كه هر كدوم تريد هاي مختلفي دارن)
با اين كار برنامه ها رو ميشه تقسيم كرد و همزمان انجام داد (البته CPU رو ميگيم مثلا تريد اصلي برنامه كه كارهاي سنگين ميكنه رو هر 1 ميلي ثانيه و تريد فرم اسپلش رو هر 1000 ميلي ثانيه چك كنه.)
در كل يه چيز ديگه هم بگم اينه كه CPU هر وقت وقت كنه به ترتيب به تريد ها سر ميزنه. حالا مثلا اولويت بعضي تريدها بالاتره و بيشتر به اونا سر ميزنه.
طولاني شد.ببخشيد:چشمک:. اميدوارم مفيد باشه براتون.
اگه مشكلي بود بگو ...

babak_dayyani
چهارشنبه 03 شهریور 1389, 15:43 عصر
ممنون...خیلی کمک کردی دوست عزیز...
ولی یه چیزی رو هنوز نفهمیدم...کاربردش کجاها میتونه باشه ؟

amir-yeketaz
چهارشنبه 03 شهریور 1389, 16:16 عصر
thread ها یه بحث پیشرفته در برنامه نویسی هستن و خودشون برای خودشون دنیایی دارن ... کار کردن باهاشون راحته ولی مدیریت کردنشون یه خورده تخصصیه :لبخند:

کاربردشو میتونی تو ویندوز ببینی :
http://up.iranblog.com/Files3/b5eae5e055114bfb8bf4.jpg

تعداد تردهای فعال : 577 !!!!!

و خیلی جاهایه دیگه که میخوای دو تا کار یا بیشتر همزمان با هم انجام بشه ... البته همزمان که نه در کوانتوم های زمانی ...

hamid.shekasteh
چهارشنبه 03 شهریور 1389, 18:09 عصر
ولی یه چیزی رو هنوز نفهمیدم...کاربردش کجاها میتونه باشه ؟


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