در طرح‌ریزی کامپیوتری، **الگوی مخزن نخ** زمانی قابل اجراست که تعدادی از نخ‌ها برای اجرای فعالیت‌ها که عموماً در یک ردیف سازماندهی شده‌اند، ساخته شده‌اند. نتایج این فعالیت‌ها که در حال اجراست می‌تواند باز هم در یک ردیف قرار گیرد و حتی فعالیت‌هایی که هیچ نتیجه‌ای حاصل نمی‌دهند نیز به همین منوال اعمال می‌شوند.

عموماً فعالیت‌های بسیار بیشتری از این نخ‌ها وجود دارد. به محض اینکه هر نخی فعالیتش را به اتمام می‌رساند برای فعالیت بعدی از ردیف ذکر شده درخواست می‌دهد و این کار را تا زمانی انجام می‌دهد که همه فعالیت‌ها به اتمام برسند. سپس نخ تا زمانی که فعالیت‌های جدیدی در دسترس قرار بگیرند خاتمه می‌یابد.
تعداد نخ‌ها در قالب پارامتر استفاده می‌شوند که می‌تواند خود را برای بهترین اجرا آماده کند. علاوه براین، تعداد نخ‌ها می‌تواند بر اساس فعالیت‌های مورد انتظار پویا باشند. به عنوان مثال، یک سرور وب می‌تواند در صورت لزوم (یعنی در حالتی که اگر صفحات وب زیادی درخواست بدهند) نخی را بیفزاید و همچنین می‌تواند نخ‌ها را وقتی که صفحات وب آن درخواست را رد می‌کنند، حذف کند.

هزینه داشتن مخزن نخ وسیع تر استفاده منبع را افزایش می‌دهد. الگوریتم کاربردی برای تشخیص ساخت یا نابودی نخ‌ها بر عملکرد کلی تأثیر بسزایی دارد.

* ایجاد نخ‌های بسیار زیاد، منابع و زمان در ایجاد هرگونه نخ نامناسب هدر می‌رود.
* نابودی نخ‌های بسیار زیاد و زمان بیشتری صرف می‌شود اگر بعداً بخواهیم آن را بسازیم.
* ایجاد نخ‌ها به صورت آهسته و کند ممکن است باعث اجرای ضعیف کاربران شود.
* ایجاد نخ‌ها به صورت آهسته و کند ممکن است باعث ازبین بردن دیگر مراحل منابع و مراجع شود.

الگوریتم انتخابی به مشکل مورد نظر و الگوهای استفاده مورد انتظار بستگی دارد. اگر تعداد وظایف زیاد باشد، ساختن یک نخ برای هر کدام غیرعملی می‌شود.
یکی دیگر از مزایای استفاده از مخزن‌های نخ¬ به جای ساختن نخ جدید برای هر وظیفه این است که ساختن و تخریب نخ پشت سر هم نفی شده‌است. این موضوع باعث عملکرد بهتر و پایداری بهتر سیستم می‌شود. ایجاد و تخریب نخ و همچنین منابع مرتبط با آن فرایندی زمانبر است. تعداد بیش از حد نخ‌ها حافظهٔ زیادی نیز دربرمی گیرد. تعویض زمینه بین نخ‌ها عملکرد را پایین می‌آورد. برای مثال، اتصال سوکت به موتور دیگر که ممکن است شامل هزاران چرخه تخریب و ایجاد باشد، می‌تواند توسط ارتباط آن با نخی که فقط در یک انتقال وجود دارد، از بین برود.

هنگامی که یک الگو را پیاده‌سازی می‌کنیم برنامه‌نویس باید از نخ امن بودن صف مطمئن باشد. در جاوا، شما می‌توانید با استفاده از کلمه کلیدی همگام‌شده متد مناسب را همگام کنید. این کار بلاک اصلاح شده را توسط همگام شده به یک ساختار اتمیک مقید می‌کند، بنابراین هر نخی که می‌خواهد منبع وابسته را استفاده کند مجبور می‌کنید تا زمانی که هیچ نخی از منبع استفاده نمی‌کند منتظر بماند. یک چالش در این روش گران بودن همگام سازی است. شما می‌توانید یک شی ایجاد کنید که لیستی از همه کارها را در صف نگه دارد و آن یک یگانه است.
با اینکه نخ‌ها به‌طور مفهومی به یک سرور اصلی (مزرعه) با یک فرایند رئیس مربوط می‌شود که این نخ‌ها کارها را بین فرایندهای کارگر در کامپیوترهای مختلف توزیع می‌کنند تا توان عملیاتی را بالا ببرند ولی معمولاً یک دسته نخ بر روی یک کامپیوتر اجرا می‌شود. مسئله برآشفتن موازی با این روش قابل جوابگویی است.

منابع
-----


1. Garg, Rajat P. & Sharapov, Ilya Techniques for Optimizing Applications - High Performance Computing Prentice-Hall 2002, p. 394


| * ن
* ب
* و
الگوهای طراحی |
| --- |
| الگوهای طراحی GO4 | 

|  |  |
| --- | --- |
| ایجاد | 
* الگوی کارخانه انتزاعی
* الگوی سازنده
* الگوی متد کارخانه شیء
* الگوی نمونه اولیه
* الگوی یگانه

 |
| ساختاری | 
* آداپتور
* پل
* کامپوزیت
* آذینگر
* نما
* مگس وزن
* وکالت

 |
| رفتاری | 
* زنجیره مسئولیت
* الگوی فرمان
* مفسر
* الگوی تکرار
* میانجی
* یادگاری
* ناظر
* وضعیت
* استراتژی
* متد الگو
* بازدیدگر

 |

 |
| Concurrencypatterns | 
* Active object
* Balking
* Binding properties
* Double-checked locking
* Event-based asynchronous
* Guarded suspension
* Join
* قفل
* مانیتور
* Proactor
* Reactor
* Read write lock
* زمان‌بندی
* الگوی مخزن نخ
* Thread-local storage

 |
| الگوهایمعماری | 
* Front controller
* مفسر
* مدل-نما-کنترل‌گر
* ADR
* Entity-component-system
* چندلایه
* Specification
* Publish–subscribe
* اشیای لخت
* Service locator
* ثبت کنشور
* Identity map
* شی دسترسی به داده
* شی انتقال داده
* وارونگی کنترل
* Model 2

 |
| دیگرالگوها | 
* Blackboard
* Business delegate
* Composite entity
* تزریق نیازمندی
* Intercepting filter
* بارگیری تنبلانه
* شیء ساختگی
* Null object
* استخر اشیاء
* Servant
* Twin
* Type tunnel
* Method chaining

 |
| کتاب‌ها | 
* *الگوهای طراحی*
* *Enterprise Integration Patterns*
* *Patterns of Enterprise Application Architecture*
* *Analysis patterns*

 |
| افراد | 
* کریستوفر الکساندر
* Erich Gamma
* Ralph Johnson
* John Vlissides
* گریدی بوچ
* کنت بک
* وارد کانینگهام
* مارتین فولر
* رابرت سسیل مارتین
* Jim Coplien
* Douglas Schmidt
* Linda Rising

 |
| جوامع | 
* The Hillside Group
* The Portland Pattern Repository

 |