Thread Manager(TM) je část kódu, zodpovědná za správu pracovních threadů. TM má přehled o právě běžících pracovních threadech. Je schopen regulovat maximální počet běžících threadů, který je konfigurovatelný v položce max_threads konfiguračního souboru. Uživatel si tak může nastavit maximální počet threadů, a maximálně tak přizpůsobit výkon PETu svému hardwaru. Každý thread je jednoznačně identifikován svým pthread_t ID, které vrací knihovní funkce na vytváření threadů - pthread_create(...).
Ji¾ vytvoøené pracovní thredy se uchovávají v tzv. thread poolu, co¾ je jakýsi threadový zásobník. Pokud má Loop Thread k vyøízení po¾adavek, zkontoluje nejprve zda-li není ve thread poolu volný (uspaný) thread. Pokud ano, tak je probuzen, aby po¾adavek vyøídil. Pokud ne, tak se vytvoøí nový pracovní thread. Poèet threadù ve thread poolu se hlídá a nesmí pøekroèit u¾ivatelem stanovenou mez. Pokud ji¾ není mo¾né vytvoøit nové pracovní thready Loop Thread se uspí a nové po¾adavky neakceptuje do té doby, dokud není k dispozici volný pracovní thread. Ka¾dý pracovní thread má svoje poøadové èíslo, podle toho v jakém poøadí byly vytváøeny. Toto poøadové èíslo je zároveò indexem do dynamického pole, kde se uchovává pthread_id bì¾ících threadù. Pokud thread nebì¾í a je uspán ve thread poolu, je na tomto místì hodnota nula. Tìchto hodnot se poté vyu¾ívá v shutdown a restart stavech, kdy je nutno thready ukonèit.
Vý¹e uvedený threadový model je tøeba øádnì synchronizovat. Jako synchronizaèní primitiva jsme pou¾ili condition variables spolu se zámky. Uspání threadu je vlastnì èekání na condition variable, pu¹tìní threadu je v podstatì signálování této condition variable.