PDA

View Full Version : سوال: گسترش برنامه به نخ های متعدد و جدا از هم



ali.monje
جمعه 09 خرداد 1393, 15:27 عصر
سلام
طی هفته گذشته اقدام به ایجاد تاپیک ایجاد لیستی از Objectها (http://barnamenevis.org/showthread.php?453609-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D9%84%DB%8C%D8%B3%D8%AA%DB%8C-%D8%A7%D8%B2-object-%D9%87%D8%A7) کردم که همکاری دستان به کدی هم در این زمینه به دست اومد و به صورت تئوری کاربردی بود ولی پاسخگو واقع نشد
و چون بحث اصلی از موضوع تاپیک قبل مجزاست اقدام به ایجاد تاپیک جدید کردم.

موضوع اصلی کاری که باید انجام بشه این هست که در طول روال برنامه نیازه برنامه در بازه های خاصی که در حال فعالیت هست نخ هایی رو ایجاد کنه و قسمتی از کار رو برای پردازش به اون بده و خودش به ادامه کارش بپردازه تعداد اجرا یا فراخوانی این نخ ها معلوم نیست شاید بالای 100 هزار نخ در کمتر از چند دقیقه و همزمانی کار این نخ های ایجاد شده تنها در حد چند میکرو ثانیه ( CPU منفجر نشه خوبه :لبخند: )
ولی اصل کار همه این نخ هایی که ایجاد میشن یکی هستن , یعنی همشون یه مقادیری رو دریافت می کنن وبا توجه به اون مقادیر کار مشخصی رو انجام میدن

بخوام به صورت کاربردی بگم اینطوری میشه :
در طول برنامه به آبجک هایی از نوع BackgroundWorker نیاز داریم ولی چون تعداد مشخص نیست و ممکنه در هر بار اجرای برنامه کم یا زیاد شه نمیشه در ابتدای برنامه همشونو ایجاد کرد ، از طرفی برنامه به صورت سرویس هست و امکان استفاده از ابزار هم نیست و باید حین اجرا ساخته بشن ولی این یه مشکلی ایجاد میکنه یعنی هم نام بودن ، طی برنامه فقط یه تابع برای عمل backgroundWorker_DoWork وجود داره که هر آبجکتی که ساخته میشه فقط اونو اجرا میکنه

تو یه مثال ساده برنامه جستجو سریع : برنامه شروع به جستجو میکنه هر وقت فایل دید ذخیره میکنه هر وقت پوشه دید یک backgroundWorker ایجاد و این تابع رو به اون نسبت میده ممکنه در داخل اون پوشه پوشه هایی هم باشه که با دیدن هر کدوم نخ جدیدی ایجاد و به اون اختصاص داده میشه تا زمانی که شاید از مسیر های مختلف که برنامه داره طی میکنه چندین و چند هزار نخ به صورت همزمان ایجاد شن .

نمیدونم تونستم کامل توضیح بدم یا نه ولی اگر کسی از دوستان چیزی رو گرفت یا از توضیح سر در نیاورد بگه بیشتر توضیح بدم در نهایت هدف برنامه ساخت یک چنین نخ هایی است که توضیح دادم
اگه بتونیم به کمک هم ایجادش کنیم میتونه تو خیلی از برنامه ها مفید واقع بشه
منتظر پاسخ و نظر دوستان هستم

ali.monje
شنبه 10 خرداد 1393, 19:44 عصر
از دوستان کسی اطلاعاتی یا تجربه ای در این زمینه نداره؟