Jocurile sunt aplicatii care au nevoie sa faca foarte multe lucruri in timp real. Pentru a face mai multe lucruri e nevoie sa folosim multithreading. Dar creearea unui thread pentru fiecare lucru pe care trebuie sa-l facem intr-un cadru este destul de costisitoare (si chiar inutila). De aceea, eu m-am gandit sa creez un WorkerThread care trebuie sa fie creeat o singura data (atunci cand aplicatia este pornita) si poate sa execute mai multe functii (care pot fi schimbate atunci cand actualizam un cadru pe care trebuie sa-l desenam).
Multithreadingul este foarte folositor atunci cand avem operatii pe care le putem face de-a lungul a mai multe cadre (exemplu: sa calculam o ruta - nu e neaparat sa facem asta intr-un singur cadru)
Pentru a putea folosit la maxim aceasta clasa, ar trebui sa creeam o alta clasa ThreadManager care va creea la inceput atatea thread-uri cate are procesorul si le va aloca atunci cand va fi nevoie de ele. De asemenea, aceste threaduri pot fi folosite si la initializare (un thread incarca cateva animatii, altul se ocupa de compilarea si creearea shaderelor), threadul principal doar dandu-le "activitati" threadurilor, iar atunci cand ramane ajunge la sfarsitul initializarii, va apela o functie care va astepta toate threadurile. (Aici este destructorul)
Exemplu: Procesorul are 4 nuclee si 8 threaduri. Vom creea 8 threaduri pe care le vom aloca in timpul jocului.
!Atentie: Trebuie sa folositi un compilator C++11.