Jeśli korzystasz z biblioteki zadań (PTL), nie musisz się o to martwić. Możesz przeczytać więcej na ten temat here. W skrócie:
TPL dynamicznie skaluje stopień współbieżności, aby jak najefektywniej wykorzystać wszystkie dostępne procesory. Ponadto OC obsługuje podział prac ...
Utworzyliśmy otoki wokół zadania w następujący sposób:
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);
}
I wtedy nazywamy go jak tak. W tym przypadku jedyną pracą, którą chcemy wykonać, jest wywołanie pojedynczej metody co 1 minutę, z 1 sekundowym opóźnieniem w pierwszym wykonaniu.
PeriodicTaskFactory.Start(() =>
{
CdClMappingLogic.Invoke();
}, 60000, 1000, -1, -1, true)
Jak rozumiem, zarządzany wątek nie jest koniecznie uruchamiany na własnym natywnym wątku. Myślę więc, że odpowiedź na twoje pytanie brzmi "nie". – ken
Zadanie działa bardzo podobnie do wątku, dla którego rdzeń działa (wierzę). Aby odpowiedzieć na twoje pytania, zależy to od tego, jakie zadania wykonujesz, które zasoby wykorzystują najwięcej procesora/IO/Memory/Disk ...? – TheKingDave
Zadanie może przeskakiwać z jednego rdzenia na drugi. Naprawdę powinieneś zapytać: "czy zadanie działa na więcej niż jednym rdzeniu?". –