عندما تكون كمية معالجة البيانات كبيرة، كيف تستجيب لعمليات المستخدم أثناء معالجة البيانات؟ Windows95/98 و WindowsNT عبارة عن أنظمة تشغيل متعددة المهام ومتعددة الخيوط. وحدة الجدولة الخاصة بها عبارة عن خيط، أي أن الخيط هو الوحدة الأساسية للنظام لتخصيص موارد وقت المعالج. لذلك، يمكننا استخدام سلاسل العمليات لمعالجة دفعات كبيرة من البيانات أثناء الاستجابة لعمليات المستخدم.
باعتبارها منصة تطوير ممتازة، توفر DELPHI دعمًا قويًا لتطوير التطبيقات متعددة الخيوط. يمكنك مباشرة استخدام وظيفة واجهة Win32API CreateThread التي توفرها بيئة Windows 32 بت، أو يمكنك استخدام وظيفة BeginThread المتوفرة في DELPHI. في المثال التالي، يتم استخدام فئة TThread المقدمة من DELPHI.
واحد. الطريقة الأساسية هي كما يلي:
1. اشتقاق فئة جديدة من فئة Tthread. (إنشاء فئة TSortThread)
2. تحديد طريقة إنشاء الفئة الجديدة.
3. حدد طريقة التنفيذ للفئة الجديدة، وأدخل الكود الذي تم تنفيذه عند تشغيل مؤشر الترابط في طريقة التنفيذ.
4. إنشاء مثيلات باستخدام أساليب الفئة المرجعية.
اثنين. الكود التفصيلي ووصف المثال:
أولاً، قم بإنشاء وحدة جديدة واحفظها باسم mysort.pas. في هذه الوحدة، قمنا بإنشاء فئة TSortThread، والتي ترث من فئة TThread، لذلك عندما نقوم بإنشاء مثيل لهذه الفئة في البرنامج، نقوم بإنشاء موضوع جديد. .
بعد ذلك، قم بتحديد طريقة فرز في هذه الفئة لفرز المصفوفة، وفي الوقت نفسه، تتجاوز فئة TSortThread طرق المُنشئ التي يتم إنشاؤها وتنفيذها لفئة TThread. في طريقة التنفيذ، يتم استدعاء طريقة الفرز لفرز المصفوفة. الكود المحدد هو كما يلي:
Unitmysort;
واجهة
usesClasses;// يتم تعريف فئة TThread في الفئات.
يكتب
PSortArray=TSortArray;
TSortArray=array.[0..MaxIntdivSize؟؟
من(عدد صحيح)-1]من عدد صحيح؛
{تم تعريف فئة TsortThread هنا}
TSortThread=الفئة(THread)
خاص
{يتم تعريف المتغيرات الخاصة التالية في فئة TSortThread}
fsortArray:PSortArray;
FSize:عدد صحيح؛
FA، FB، FI، FJ: عدد صحيح؛
محمي
{تتجاوز الفئة TSortThread طريقة التنفيذ الخاصة بالفئة Tthread}
تنفيذ الإجراء؛ تجاوز؛
{يضيف Class TsortThread طريقة فرز}
الإجراء Sort(varA:arrayofInteger);
عام
{تتجاوز الفئة TSortThread طريقة إنشاء الفئة Tthread}
buildorCreate(varSortArray:arrayofInteger);
نهاية؛
تطبيق
buildorTSortThread.Create(varSortArray:arrayofInteger);
يبدأ
FSortArray:=@SortArray;
FSize:=High(SortArray)-Low(SortArray)+1;
FreeOn إنهاء:=True;
inheritedCreate(False);
نهاية؛
{عند بدء تشغيل مؤشر الترابط، سيتم استدعاء أسلوب التنفيذ. }
الإجراء TSortThread.Execu؟؟
تي؛
يبدأ
Sort(Slice(FSortArray,FSize));
نهاية؛
{يتم تنفيذ فرز الفقاعات أدناه}
الإجراء TSortThread.Sort(varA:arrayofInteger);
فار
أنا، ي، تي: عدد صحيح؛
يبدأ
لأني: = مرتفع (أ) نزولاً إلى منخفض (أ) افعل
forJ:=منخفض(A)إلىعالي(A)-1do
إذاA[J]>A[J+1] إذن
يبدأ
ت:=أ[ي];
أ[ي]:=أ[ي+1]؛
أ[ي+1]:=تي؛
ifTerminated ثم خروج؛
نهاية؛
نهاية؛
نهاية
أخيرًا، أضف usemysort عند تنفيذ تطبيق المستخدم، وأضف TQuickSortthread.Create(SortArray) حيث يتم إجراء الفرز، حيث يكون SortArray عبارة عن مصفوفة فعلية. بهذه الطريقة، يمكن استخدام الخيوط لتنفيذ الفرز. أثناء عملية الفرز، يمكن للمستخدمين إجراء عمليات أخرى دون انتظار انتهاء الفرز. تعد طريقة استخدام مؤشرات الترابط المتعددة للرد على عمليات المستخدم في الوقت الفعلي ذات أهمية خاصة في التطبيقات التي تتضمن كميات كبيرة من معالجة البيانات.