( utpKabel | 2014. 07. 21., h – 15:20 )

"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.