soprattutto prova con numeri significativi: con i calcolatori odierni 3/10 schede è niente, prova a metterne almeno un centinaio (e/o salire in ordine di grandezza anche ad un migliaio).

Ricorda anche che il parallelismo è fittizio (anche se hai 2 processori non è detto che il tuo programma li richiami entrambi, puoi gestire tutto con un solo processore) e dipende anche da altri fattori (ad esempio priorità).
Per un programma del genere dovresti in un certo senso porti nella situazione tipo, da quella arrivare ai casi limiti e pensare entrambe le soluzioni nel caso limite.

Poi un consiglio: in un contesto multi-thread è bene che ogni thread sia autoconsistente (per evitare casini insomma).
Dovresti portarti dietro le info in modo da recuperarle thread per thread