View Full Version : ترد ها
1485159
چهارشنبه 17 تیر 1388, 14:54 عصر
ببخشید میخواستم ببینم که یه ترد به چه دردی میخوره؟؟یه سوال دیگه مگه شما نگفتید که در رویاداد Execute هر دسوری بنویسی تا زمانی که ترد آزاد بشه اون دستور اجرا میشه؟
پس چرا فقط یک بار اجرا میشه؟؟ و بعد ترد آزاد میشه؟
ممنون
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
end;
Type
MyThread = Class(TThread)
private
protected
procedure Execute; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
////
procedure MyThread.Execute;
begin
form1.Caption:=form1.Caption+'1';
end;
////
procedure TForm1.FormCreate(Sender: TObject);
var
T : MyThread;
begin
T := MyThread.Create(True);
T.FreeOnTerminate := true;
T.Resume;
end;
end.
tdkhakpur
چهارشنبه 17 تیر 1388, 23:35 عصر
سلام
کی گفته تا وقتی که ترد هست باید کار شما ادامه پیدا کند.وقتی یک ترد شروع به اجرا میکند تا وقتی که کد یا حاقه شما ادامه داشته باشه کار ادامه پیدا میکند.
ببینید اصلا شما ترد را اینگونه فرض کنید که با هر ترد شما یک cpu دیگر به کامپیوتر خودتان اضافه میکنید. یعنی هر پردازش برای خودش یک cpu جدا برای اجرا داره یا به زبان ساده برنامه شما در دو مکان متفاوت که در اجرای هم تاثیر ندارند اجرا میشوند و کند بودن سرعت یکی بر دیگری تاثیر ندارد(البته این حرف را برای روشن ساختن مطلب عرض کردم در حالت کلی باهم میتوانند رابطه هم داشته باشند.)
Nima NT
چهارشنبه 17 تیر 1388, 23:47 عصر
اگر میخواین thread شما مکررا" اجرا بشه در رویداد onterminate دوباره thread رو resume کنید.:لبخند:
1485159
پنج شنبه 18 تیر 1388, 00:29 صبح
اگر میخواین thread شما مکررا" اجرا بشه در رویداد onterminate دوباره thread رو resume کنید
آره اونم میشه....
حالا از ترد ها چه استفاده ای میکنن؟
tdkhakpur
پنج شنبه 18 تیر 1388, 00:40 صبح
سلام
مخصوصا در بازیهای رایانه ای که هر شخص برای خودش مستقل عمل میکند یا مثلا برای هر پرنده در بازی یک ترد درنظر گرفته میشود.
ولی در کار های تجاری اصولا برای سرعت کار ها میشود ازش استفاده کرد.
vcldeveloper
پنج شنبه 18 تیر 1388, 03:08 صبح
اگر میخواین thread شما مکررا" اجرا بشه در رویداد onterminate دوباره thread رو resume کنید.برای کنترل اجرای Thread استفاده از Stop و Resume توصیه نمیشه، برای این کار از یکی از Synchronization Objects ارائه شده توسط سیستم عامل که برای کار شما مناسب باشه، استفاده کنید.
1485159
جمعه 19 تیر 1388, 13:20 عصر
[وب نگفتید که چه کربردب دارن؟
اگه میشه توضیح بدید نه این که بگید جست و جو..
1485159
سه شنبه 23 تیر 1388, 14:28 عصر
خوب بابا چه کاربردی داره؟
p_ooya
سه شنبه 23 تیر 1388, 18:37 عصر
خوب بابا چه کاربردی داره؟
مثال واقعی : شما تو برنامه ات یه حلقه نسبتاً بزرگ داری. وقتی حلقه شما اجرا میشه، فرمتون دیگه قابل دسترسی نیست و به اصطلاح قفل میکنه. حالا اگه شما بیاین حلقه تون رو تو یه thread اجرا کنید در زمانی که حلقه در حال اجراست فرم اصلی شما هم قابل استفاده خواهد بود. مثال برنامه زیر. تو این برنامه اگه button2 رو بزنی ، کپشن فرم از 1 تا 2000 عوض میشه ولی button1 در این مدت قابل استفاده نیست. اگه button3 رو بزنی، همون اتفاق میفته اما button1 هم قابل کلیکه چون در یه thread جدا اجرا میشه.
مثال واقعی تر : این مشکلی که من خودم دارم :گریه:. من برنامه ام باید به یه بانک روی وب وصل بشه. این اتصال به بانک، زمانبره و در این مدتِ اتصال، برنامه مثل برنامه ای میشه که قفل کرده. کاری که من کردم این بود که اتصال به بان رو در یک thread جداگونه نوشتم و در زمان اتصال، یه فرم خوشامد گویی قرار دادم. در حالی که فرم خوشامد گویی داره نشون داده میشه، به صورت موازی برنامه به بانک راه دور ارتباط برقرار میکنه.
1485159
سه شنبه 23 تیر 1388, 20:20 عصر
خوب اگه بخوایم یه پیکسل از یه عکس رو بخونیم اونوقت بلزم میشه از ترد استفاده کرد؟
مثل فتوشاپ.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.