Kromě chybějících kontrol návratové hodnoty existují některé další problémy, které by měly být opravitelné:
sem_destroyse nevolá.- Signál/vysílání se dotkněte 
cond_node_tpo probuzení cílového vlákna, což může mít za následek použití-po-free. 
Další komentáře:
- Vynechaná operace zničení může vyžadovat změny ostatních operací, takže je bezpečné zničit proměnnou podmínky, když POSIX říká, že to bude bezpečné. Nepodporovat zničit nebo uvalit přísnější omezení na to, kdy může být voláno, věci zjednoduší.
 - Produkční implementace by zvládla zrušení vlákna.
 - Ustoupení od čekání (požadované například pro zrušení vlákna a 
pthread_cond_timedwaittimeouty) může vést ke komplikacím. - Vaše implementace zařazuje vlákna do fronty v uživatelské zemi, což se v některých produkčních implementacích děje z důvodu výkonu; Nechápu přesně proč.
 - Vaše implementace vždy řadí vlákna do fronty v pořadí LIFO. To je často rychlejší (například kvůli efektům mezipaměti), ale může to vést k hladovění. Implementace výroby může někdy použít objednávku FIFO, aby se zabránilo hladovění.
 
V zásadě vaše strategie vypadá dobře, ale máte jedno velké nebezpečí, nějaké nedefinované chování a hnidopich:
- nekontrolujete návratové hodnoty vašich funkcí POSIX. Konkrétně 
sem_waitje přerušitelný, takže při velkém zatížení nebo smůle se vaše vlákno falešně probudí. To vše byste museli pečlivě chytit - žádná z vašich funkcí nevrací hodnotu. Pokud se některý uživatel funkcí rozhodne někdy použít návratové hodnoty, jedná se o nedefinované chování. Pečlivě analyzujte chybové kódy, které mohou funkce podmínek vracet, a udělejte to.
 - nepřenášejte návratovou hodnotu 
mallocnebocalloc 
 Upravit: Ve skutečnosti nepotřebujete malloc /free vůbec. Místní proměnná by také fungovala.
            Jak odstranit všechny soubory ve složce, ale nesmazat složku pomocí standardních knihoven NIX?         
            Proč neexistuje rozhraní DirectX API pro Linux?