Sto costruendo un'interpretazione DSL in cui il parallelismo è parte del linguaggio - l'utente afferma semplicemente che un calcolo può essere fatto in parallelo e l'interprete può decidere se effettuare il calcolo in parallelo o non. Dal momento che non è sempre utile fare calcoli paralleli, specialmente per lavori molto piccoli (cambio di contesto, copia di memoria tra core, ecc. Può effettivamente rallentare il programma).
Voglio sapere se ci sono delle "migliori pratiche" disponibili che possono calcolare (con un alto grado di certezza) se fare un nuovo calcolo nel thread corrente o generare un nuovo thread per il calcolo. Nota che dal momento che il mio linguaggio è interpretato, posso eseguire tutti i tipi di monitoraggio sul programma eseguito e prendere questa decisione a seconda di come si esegue il programma (una sorta di compilatore JIT).
Aggiornamento di "Spawn" Non intendevo creare un nuovo thread, ma trasferire l'elaborazione su un thread diverso, magari da un pool di thread. Nota che anche quando usi un pool di thread c'è un sovraccarico del possibile trasferimento di memoria tra i core del processore e cose del genere, quindi anche in questo caso la quantità di lavoro dovrebbe essere relativamente alta.