Io uso per calcolare i primi usando un codice lineare che ha richiesto molto tempo. Dato che ho un processore a 8 core, ho pensato al multi-threading.
In un primo momento ho usato per mettere un numero enorme di int in un vettore quindi condividere il vettore tra i thread che portano ogni numero che non è un numero primo. Il primo thread ha elaborato la parte 1st / nthread , il secondo ha elaborato il 2nd / nthread e così via. Il che mi porta a un problema di risorse a causa dell'accesso simultaneo.
Poi ho provato a dividere il vettore nei vettori nthread per assegnare un vettore a ciascun thread, rimuovendo il problema di accesso simultaneo. Ma non sono convinto che sia il modo migliore di farlo poiché l'elaborazione dei numeri primi da 1 a 10.000 è più veloce dell'elaborazione dei numeri primi da 10 001 a 20.000.
- C'è un modo migliore per trarre profitto dal multi-threading?
- Se no, qual è il modo migliore per dividere i vettori in modo che il thread abbia lo stesso tempo?