خيط (حاسوب)

في المعلوماتية والحوسبة، الخيط أو سلسلة التعليمات thread (أو thread of execution) هي عبارة عن مسار لتنفيذ العملية وبما انه مجرد مسار فانه لا يحتاج لمصادر خاصة لانه يستخدم مصادر العملية برنامج ليقوم بأكثر من مهمة Task بشكل متزامن (أو بشكل متزامن كاذب) لكن إذا كانت وحدة المعالجة المركزية باكثر من نواة فانه يقوم بعمل تزامن حقيقي. بهذا فهو يتميز عن العملية Process بشكل عام في طريقة إنشاء سلسلة التعليمات وطريقة مشاركتها لمصادرها بشكل مختلف عن العمليات لكن هذه الفوارق في النهاية تختلف حسب نظام التشغيل.

يمكن تنفيذ سلاسل تعليمات متعددة بشكل متواز على عدة أنظمة حاسوبية. وكان هذا يدعى قديما بالتنفيذ المتعدد للسلاسل التعلميمية multithreading ويحدث عن طريق تعدد المهام computer multitasking أو ما يدعى بتجزئة الزمن time slicing وحيث يقوم معالج مركزي بالتبديل بين سلاسل التعليمات المختلفة. (ضمن هذا المفهوم التنفيذ ليس متزامنا بالنسبة لمعالج واحد لكننا نعتبره تزامنا مزيفا لأن التبديل يتم بسرعة كبيرة تعطينا انطباع بوهم التزامن)، بالمقابل يمكننا انجاز تزامن حقيقي عن طريق الاستعانة بمعالجات متعددة النواة.

في الوقت الراهن، العديد من أنظمة التشغيل تدعم تجزئة الزمن وتعدد المهام، أو التنفيذ متعدد المعالجات multiprocessor threading عن طريق منسق عمليات scheduler. تمكن نوى أنظمة التشغيل المبرمجين من التعامل مع عدة سلاسل تعليمات عن طريق واجهة استدعاءات النظام system call. بعض التطبيقات لهذا الموضوع يدعى سلسلة تعليمات النواة kernel thread حيث تكون العمليات الخفيفة lightweight process أنماطا خاصة من سلاسل تعليمات النواة والتي تتشارك بنفس الحالة ونفس المعلومات. ويبقى المبرمجون قادرين على تطبيق سَلسَلة التعليمات threading عن طريق المؤقتات، الإشارات، أو وسائل أخرى لتفسير تسلسل تنفيذ التعليمات وبالتالي الحصول على تجزئة زمنية جيدة. وهذا ما يدعى أحيانا : سلاسل تعليمات مجال المستخدم user-space threads.في أغلب أنظمة التشغيل لايتم تنفيذ سلاسل تعليمات المستخدم الا عبر سلسلة تعليمات النواة.

علاقة سلاسل مجال المستخدم وسلاسل تعليمات النواة:هناك اربع أنواع من العلاقات تربط النوعين من السلاسل وهي كالتالي. 1- واحد إلى متعدد:في هذا النوع من العلاقات يرتبط كل تشعب نواة باكثر من تشعب مستخدم. تتميز باستغلال تشعبات النواة لكنها في نفس الوقت تتسبب في الضغط على تشعبات النواة، يستخدم هذا النوع في أنظمة جرين سولاريس، وجنو. 2- واحد لواحد : في هذا النوع من العلاقات يرتبط كل تشعب من تشعبات المستخدم بتشعب واحد فقط من تشعبات النواة، يتضح لنا انه لو ان هناك تشعب واحد من تشعبات النواة تعطل فان تشعب المستخدم الذي كان متصلا به لن ينففذ ابداً. 3- متعدد لمتعدد : هذا النوع من العلاقات تقوم كل مجموعة من تشعبات النواة بإدارة مجموعة من تشعبات المستخدم. 4- نمط المستويين : يستخدم هذا النوع من العلاقات هجين من النوعين السابقين بحيث يسمح بعلاقات واحد لواحد ومتعدد لمتعدد، هذا النوع هو الأكثر استخداما حالياً هناك ثلاث مكتبات اساسية للتشعبات أو السلاسل : (1) PThreads: وهي اختصار لل POSIX Threads وتستخدم في يونكس وماكنتوش وغيرهما كما تسمح باستخدام سلاسل على مستوى النواة أو على مستوى المستخدم. (2) Win32 Threads : وهي المستخدمة في أنظمة تشغيل ويندوز "النوافذ" ولا تسمح للمستخدم في التعامل مع تشعبات " سلاسل " النواة وانما تتوفر له هذه السلاسل في مجال المستخدم فقط. (3) Java Threads : وهي خاصة ببرامج لغة الجافا وتقوم بإنشاء سلاسل خاصة بكل برنامج على حدة.

في بعض الأحيان يستخدمون مصطلح سلسلة تعليمات من اجل شفرة مجزأة threaded code وهو نمط من الشفرات البرمجية يتألف بالكامل من استدعاءات لأقسام برمجية subroutine.

ca:Fil d'execució cs:Vlákno (program) de:Thread (Informatik) el:Νήμα (υπολογιστές) Thread (computer science)]] es:Hilo de ejecución et:Lõim fr:Thread (informatique) he:תהליכון hu:Szál (számítástechnika) id:Thread is:Þráður it:Thread (informatica) ja:スレッド (コンピュータ) ko:스레드 ml:ത്രെഡ്ഡിങ് nl:Thread (informatica) no:Tråd (informatikk) pl:Wątek (informatyka) pt:Thread (ciência da computação) ro:Fir de execuție simple:Thread (computer science) sk:Thread (multithreading) sr:Нит (рачунарство) sv:Tråd (datavetenskap) tr:İş Parçacığı uk:Нить zh:线程