Trådpool

ett designmönster som utför arbetsuppgifter parallellt

Trådpool (från engelskans thread pool) är ett designmönster[1] som består av ett antal trådar (m) som skapas för att utföra ett antal uppgifter samtidigt (n). Vanligtvis motsvarar m inte n; istället är antalet trådar inställt till de tillgängliga datorresurserna för att hantera uppgifterna parallellt (processorer, kärnor, minne) medan antalet uppgifter beror på problemet och kanske inte är känt i förväg.

Ett exempel på en trådpool (gröna rutor) med väntande uppgifter (blå) och färdiga uppgifter (gul)

Anledningar till att använda en trådpool, istället för att skapa en tråd per uppgift, är att förhindra overhead för tid och minne när trådar skapas,[2] samt för att undvika att få slut på resurser såsom öppnade filer eller nätverksanslutningar (där operativsystem allokerar ett begränsat antal för att köra program).[3] Ett vanligt sätt att distribuera uppgifterna till trådar (schemalägga uppgifterna att köras) är med hjälp av en synkroniserad , känd som en uppgiftskö (från engelskans task queue). Trådarna i poolen plockar uppgifter från kön, utför dem och sedan returnerar dem till kön för nästa uppgift.

Referenser

redigera
  1. ^ Garg, Rajat P. & Sharapov, Ilya Techniques for Optimizing Applications - High Performance Computing Prentice-Hall 2002, p. 394
  2. ^ Holub, Allen (2000). Taming Java Threads. Apress. sid. 209 
  3. ^ Makofske, David B.; Donahoo, Michael J.; Calvert, Kenneth L. (2004). TCP/IP Sockets in C#: Practical Guide for Programmers. Academic Press. sid. 112 

Se även

redigera