PDA

View Full Version : Thread



champion
یک شنبه 01 مهر 1386, 22:17 عصر
بچه ها سلام
من یک سوال راجع به Thread داشتم . من میخوام یک قسمتی از برنامه ام رو که بسیار زمان گیر هست توی Thread بزارم تا همون جور که دوستان قبلا توضیح دادن کار بر من همزمان وقتی مثلا محاسبه حقوق و یا گزارش سنگینی رو انتخاب میکنه دیگه برنامه معطل نمونه و هم زمان بتونه کار دیگه ای انجام بده
اولا میخواستم اساتید منو راهنمایی کنن ثانیا شنیدم که فقط تعریف یک Thread و قرار دادن بخشی از کار در ان کافی نیست و جواب نمیده و باید علاوه بر ان تمام برنامه من هم داخل یک Thread باشه ولی من مثالهایی که دیدم و چند نمونه ای که نوشتم اینجوری نبود و نیازی هم نداشت آیا واقعا درسته ؟

vcldeveloper
دوشنبه 02 مهر 1386, 02:32 صبح
برنامه شما بصورت عادی در یک Thread اجرا میشه که همون Thread اصلی برنامه هست. شما کافیه Thread جدیدتون را تعریف کنید و کدهای لازم را برای آن بنویسید.
البته دقت کنید که برای استفاده مفید از Thread ها صرفا ایجاد یک Thread و منتقل کردن یکسری کد به آن کافی نیست. شما باید طراحی برنامه را با دقت تغییر بدهید و دقیقا مشخص کنید که به چه منظوری از این Thread استفاده می کنید، این Thread به چه صورتی باید ایجاد و آزاد شود، چطور باید با سایر Thread های برنامه ارتباط برقرار کند.
در واقع در یک برنامه خوب، برنامه بصورت Multi-Threaded طراحی می شود و تمام جوانب آن سنجیده می شود، نه اینکه یکدفعه در مرحله کدنویسی تصمیم به Multi-thread کردن برنامه بگیرند.Debug کردن یک برنامه Multi-Threaded به مراتب سختر از یک برنامه تک رشته ایی است.

در هر حال، تاپیک های زیاد و خوبی در سایت در رابطه با Thread ها وجود داره که می تونید با مطالعه آنها بیشتر با این مبحث آشنا بشید.

موفق باشید.

champion
دوشنبه 02 مهر 1386, 21:17 عصر
ممنون جناب کشاورز پس درست فهمیدم باید کل برنامه من هم توی یک ترد باشه نه ؟‌
وحالا به نظر شما ایا درست هست که من در مورد برنامه ام که البته برای مولتی ترد هم طراحی نشده یک قسمت رو به ترد منتقل کنم ؟‌آیا واقعا ارزش وقت گذاشتن رو داره ؟‌
در ضمن من متوجه شدم که توی برنامه های تحت وب به صورت خودکار تشخیص میده و کل برنامه رو توی یک ترد کلی قرار میده ایا توی دلفی این قابلیت وجود نداره ؟‌
ممنونم

Mahmood_M
دوشنبه 02 مهر 1386, 22:05 عصر
ممنون جناب کشاورز پس درست فهمیدم باید کل برنامه من هم توی یک ترد باشه نه ؟‌
وقتی برنامه شما اجرا میشه ، یک Thread از طرف ویندوز به اون اختصاص پیدا میکنه ، یعنی برنامه شما کلا داخل یک Thread جدا اجرا میشه ...

وحالا به نظر شما ایا درست هست که من در مورد برنامه ام که البته برای مولتی ترد هم طراحی نشده یک قسمت رو به ترد منتقل کنم ؟‌آیا واقعا ارزش وقت گذاشتن رو داره ؟‌

معمولا هنگامی از Thread ها استفاده میشه که عمل زمانبر یا پیچیده ای انجام بشه ، یا کلا بخواید کدی رو اجرا کنید که اگر به صورت عادی اجرا بشه ، برنامه قفل کنه و مواقعی نظیر این ..
اگه کار خاصی نمی خواید بکنید استفاده از Thread توصیه نمیشه ولی اگه عملیاتی باید انجام بشه که زمانبر هست ( یا کلا باعث هنگ کردن برنامه میشه ) ، بهتره از Thread استفاده کنید ...
این مقاله شاید بتونه کمکتون کنه :
http://barnamenevis.org/forum/showthread.php?t=79463

موفق باشید ...