المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : مافائدة استعمال هدا الاجراء Synchronize() ؟؟


abdelmalek
05-09-2010, 10:19 PM
السلام عليكم ورحمة الله وبركاته

بعدا مشاهدتي لموضوع thread الدي وضعه الاخ TF6M راودني سؤال ؟

مثلا قمنا بانشاء thraed كما يلي :

TMyThread = Class(TThread)
Private
Procedure showinfo;
Protected
Procedure Execute; override;
end;

initialization

Procedure TMyThread.showinfo;
Begin
Memo1.Lines.Add('Hello Delphi4arabe');
end;

Procedure TMyThread.Execute;
Begin
while not Terminated do
begin
Synchronize(showinfo);
end;
end;

end.

السؤال : ما فائدة هاته التعليمة Synchronize(showinfo);


بالتوفيق للجميع

في امان الله

kachwahed
05-09-2010, 11:10 PM
وعليكم السلام ورحمة الله وبركاته
السؤال : ما فائدة هاته التعليمة
القيام بتنفيذ الإجراء showinfo
لماذا لم تكتب أوامر الإجراء مباشرة؟
لأنه لا ينبغي لـ Thread أن يقوم بالتغيير على المكونات مباشرة. لاحظ:
Memo1.Lines.Add('Hello Delphi4arabe');

abdelmalek
06-09-2010, 09:37 AM
بارك الله فيك

لأنه لا ينبغي لـ thread أن يقوم بالتغيير على المكونات مباشرة

المكونات فقط ام المتغيرات العامة ايضا وهل هناك شيء اخر ؟

شكرا جزيلا على التواصل

في امان الله

TF6M
06-09-2010, 10:25 AM
السلام عليكم
1- Synchronize , أي اللمزامنة في تنفيذ الإجراء أتناء تنفيذ تعليمات
إجراء الـ Execute
2- "المكونات فقط ام المتغيرات العامة ايضا وهل هناك شيء اخر ؟" , هنا حسب طريقتك
يجب حماية المتغيارت العامة أو التغير في VCL (إتباع طريقة منطقية & Wait functions & Critical Section Objects ......)ا.
3- الفكرة بسيطة , عليك بمزامنة تنفيذ الـ Methods , لتجنب التداخل (crash) & (block) ا.

http://img26.imageshack.us/img26/2322/shown.gif
a/b/c/d , تعليمات التي تنفذ في الـ Execute .
السهم الأزرق سير تنفيد الإجراء (زمنيا) .
المجالات الخضراء زمن تنفيد كل تعليمة و تختلف من واحدة الى أخرى (مقارنة / قفز / منطقية ...)
تتيح لنا Synchronize أن نزامن تنفيد الإجراء S (تعليمة أو أكثر) , داخل طور تنفيد Execute .

بالتوفيق,,

abdelmalek
06-09-2010, 12:13 PM
الحمد لله بدأ الامر يتضح

بارك الله فيك اخي tf6m لقد اسعدتني كثيرا

الله ينورك

سلامي وحبي لك اخي

في امان الله