"valamit csinálni kell vele, ha mást nem, tudni azt, hogy mi történik a háttérben."
Na persze. Ez a fránya C++ összezavarja a fejeket.
A thread nem "erőforrás". Csodálkoztam is, amikor először megláttam, hogy C++11-ben akként kezelik. Hiszen egy thread esetén nincs olyan, hogy "felszabadítás". Ha véget ér a thread futása, akkor automatikusan felszabadul, nincs mit csinálni vele. Le lehet persze ölni egy threadet, de jellemzően olyat soha nem csinál az ember.
Aztán rájöttem, hogy a std::thread destruktora joinolja a threadet (blokkolja a futó szálat amíg másik szál véget nem ér). WTF is wrong with these guys...
De aztán rájöttem, hogyan zavarodtak így össze a C++-osok. Itt van ez a destruktor, ami alapvetően egy olyan control flow feature, ami igen jó takarításra meg erőforrás-felszabadításra. Aztán találtak egy use case-t, ahogyan igen hasznosan fel lehet használni a destruktort mint control flow feature-t threadekhez. Mivel a C++ fejekben - tévesen - az van, hogy a destruktor erőforrás-felszabadításra van, a reverse logika alapján kiderült, hogy a thread egy erőforrás.
"A thread erőforrás." - ez is egy olyan igazság, ami csak a C++ univerzumban létezik, ahol minden fogalom kicsit (nagyon?) mást jelent, mint pl. a resource vagy a safety.