Comprendo che il threading è necessario per ottenere le massime prestazioni dai processori multicore di oggi, ma l'avvio di un thread è piuttosto costoso, quindi non è possibile inserire tutti i singoli calcoli che possono essere eseguiti in parallelo in una propria discussione. Ad esempio
answer = new thread(plus(1,2)) + new thread(plus(3,4))
funzionerà molto più lentamente rispetto al semplice single-threaded
answer = 1+2+3+4
ma se plus era un calcolo davvero complicato, la variante filettata potrebbe essere più veloce.
Ora alle domande
- Esistono convenzioni o standard su quale sia la lunghezza minima di codice, operazioni o tempo di esecuzione che è difendibile da inserire in una propria discussione?
- Devo anche preoccuparmi di questo o il compilatore / processore è così intelligente da fare tutto il lavoro per me?
Il motivo per cui ho posto questa domanda è che ho visto un'implementazione di quicksort che ha iniziato un nuovo thread per ogni chiamata ricorsiva che termina con (n²) thread e molti di questi thread hanno appena restituito un valore.