Se si utilizza la libreria di attività (PTL), non è necessario preoccuparsi di ciò. Potete leggere di più su di esso here. In breve:
Il TPL scala dinamicamente il grado di concorrenza per utilizzare in modo più efficiente tutti i processori disponibili. Inoltre, il TPL gestisce il partizionamento del lavoro ...
Abbiamo creato un wrapper Task come segue:
public static class PeriodicTaskFactory
{
public static Task Start(Action action, int intervalInMilliseconds = -1, int delayInMilliseconds = 0, int duration = -1, int maxIterations = -1, bool synchronous = false, CancellationToken cancelToken = null, TaskCreationOptions periodicTaskCreationOptions = TaskCreationOptions.None);
}
E poi noi lo chiamiamo in questo modo. In questo caso, l'unico lavoro che vogliamo eseguire è chiamare un singolo metodo ogni 1 minuti, con un ritardo di 1 secondo nella prima esecuzione.
PeriodicTaskFactory.Start(() =>
{
CdClMappingLogic.Invoke();
}, 60000, 1000, -1, -1, true)
fonte
2013-08-05 13:39:14
Come ho capito, un thread gestito non è nemmeno necessariamente eseguito sul proprio thread nativo. Quindi penso che la risposta alla tua domanda sia "nessuno dei due". – ken
Un'attività funziona in modo molto simile a un thread per il quale viene eseguito il core (credo). Per rispondere alle tue domande dipende da cosa stanno facendo i tuoi compiti su quale risorsa stanno usando la maggior parte della CPU/IO/memoria/disco ...? – TheKingDave
Un'attività può passare da un nucleo all'altro. Quello che dovresti veramente chiedere è "un compito funziona su più di un nucleo?". No. –