tabatabaeisa
دوشنبه 25 آبان 1394, 23:12 عصر
درود به همه دوستان و فعالان؛
من یه برنامه C# دارم که توی این برنامه قراره یه سری آبجکت (40 تا 50 تا تقریبا) پردازش بشن که کاربر میتونه اونها رو از طریق checkboxهای تعبیه شده برای هر کدوم انتخاب کنه.
کار اصلی برنامه که پردازش آبجکت های انتخابی کاربر هست توسط یه dll که در محیط visual C++ نوشته شده انجام میشه، به این صورت که آبجکت های انتخابی درون صف قرار میگیرن و دونه دونه براشون تابع پردازش کننده از dll فراخونی و خروجی مربوطه تولید میشه.
توی dll برای استفاده از قابلیت multithreading از کتابخونه boost استفاده کردم که چون به ازای هر آبجکت انتخابی باید چیزی حدود 4000 تا فایل پردازش بشه چندتا ترد ایجاد میکنم و تعداد فایلها رو تقسیم میکنم بین تردها تا پردازش ها رو انجام بدن.
دوتا مشکل دارم که امیدوارم دوستان راهنمایی کنن:
1- اگه آبجکتها دونه دونه انتخاب بشن و بعد دستور پردازش اجرا بشه برنامه به مرور کند میشه و از اون سرعت مورد انتظارش خیلی کم میشه.
به این صورت که مثلا برای پردازش آبجکت اول با توجه به استفاده از multithreadig میزان استفاده از CPU حدود 90% و پردازش به سرعت انجام میشه، این روند ادامه داره اما با ادامه دادن اجرا مثلا تو آبجکت ششم یا هفتم برنامه شروع به کند شدن میکنه و درصد استفاده از CPU به 20% میرسه و برنامه خیلی کند پیش میره.
2- اگه select all کنم و دستور پردازش رو بدم پس از پردازش مثلا 10 یا 11 تا از آبجکت ها برنامه crash میکنه!
دوستان درابتدا خیلی عذر میخوام اگه زیاده گویی کردم و بعد هم خواهش میکنم برای رفع این مشکل راهکارهاتون رو دریغ نکنید.
بی صبرانه منتظر نظرات کارگشای شما خواهم بود چون واقعا شده یه معضل بدون جواب برای من تقریبا مبتدی!
با سپاس فراوان و بدرود.
من یه برنامه C# دارم که توی این برنامه قراره یه سری آبجکت (40 تا 50 تا تقریبا) پردازش بشن که کاربر میتونه اونها رو از طریق checkboxهای تعبیه شده برای هر کدوم انتخاب کنه.
کار اصلی برنامه که پردازش آبجکت های انتخابی کاربر هست توسط یه dll که در محیط visual C++ نوشته شده انجام میشه، به این صورت که آبجکت های انتخابی درون صف قرار میگیرن و دونه دونه براشون تابع پردازش کننده از dll فراخونی و خروجی مربوطه تولید میشه.
توی dll برای استفاده از قابلیت multithreading از کتابخونه boost استفاده کردم که چون به ازای هر آبجکت انتخابی باید چیزی حدود 4000 تا فایل پردازش بشه چندتا ترد ایجاد میکنم و تعداد فایلها رو تقسیم میکنم بین تردها تا پردازش ها رو انجام بدن.
دوتا مشکل دارم که امیدوارم دوستان راهنمایی کنن:
1- اگه آبجکتها دونه دونه انتخاب بشن و بعد دستور پردازش اجرا بشه برنامه به مرور کند میشه و از اون سرعت مورد انتظارش خیلی کم میشه.
به این صورت که مثلا برای پردازش آبجکت اول با توجه به استفاده از multithreadig میزان استفاده از CPU حدود 90% و پردازش به سرعت انجام میشه، این روند ادامه داره اما با ادامه دادن اجرا مثلا تو آبجکت ششم یا هفتم برنامه شروع به کند شدن میکنه و درصد استفاده از CPU به 20% میرسه و برنامه خیلی کند پیش میره.
2- اگه select all کنم و دستور پردازش رو بدم پس از پردازش مثلا 10 یا 11 تا از آبجکت ها برنامه crash میکنه!
دوستان درابتدا خیلی عذر میخوام اگه زیاده گویی کردم و بعد هم خواهش میکنم برای رفع این مشکل راهکارهاتون رو دریغ نکنید.
بی صبرانه منتظر نظرات کارگشای شما خواهم بود چون واقعا شده یه معضل بدون جواب برای من تقریبا مبتدی!
با سپاس فراوان و بدرود.