Wenn Sie die Task-Bibliothek (PTL) verwenden, brauchen Sie sich darüber keine Gedanken zu machen. Sie können mehr darüber lesen here. Kurz zusammengefasst:
Der TPL skaliert den Grad der Parallelität dynamisch, um alle verfügbaren Prozessoren effizient zu nutzen. Darüber hinaus übernimmt die TPL die Aufteilung der Arbeit ...
Wir haben ein Wrapper um Aufgabe erstellt haben, wie folgt:
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);
}
Und dann nennen wir es wie so. In diesem Fall ist die einzige Arbeit, die wir ausführen möchten, das Aufrufen einer einzelnen Methode alle 1 Minuten mit einer Verzögerung von 1 Sekunde in der ersten Ausführung.
PeriodicTaskFactory.Start(() =>
{
CdClMappingLogic.Invoke();
}, 60000, 1000, -1, -1, true)
Wie ich es verstehe, wird ein verwalteter Thread nicht einmal unbedingt auf seinem eigenen nativen Thread ausgeführt. Also ich denke die Antwort auf Ihre Frage ist "weder". – ken
Eine Aufgabe funktioniert sehr ähnlich wie ein Thread, für den sie ausgeführt wird (glaube ich). Um Ihre Fragen zu beantworten, hängt es von Ihren Aufgaben ab, welche Ressource sie am meisten CPU/IO/Memory/Disk benutzen ...? – TheKingDave
Eine Aufgabe kann von einem Kern zum anderen springen. Was Sie wirklich fragen sollten, ist "Läuft eine Aufgabe auf mehr als einem Kern?". Nr. –