Diferença entre CancellationTokenSource e sinalizador de saída para saída do loop de tarefas

Eu queria saber se há alguma diferença entre terminar a tarefa de loop com CancellationTokenSource e sinalizador de saída

Cancelamento de passagem

CancellationTokenSource cancellationTokenSource;
Task loopTask;

void StartLoop()
{
    cancellationTokenSource = new CancellationTokenSource();
    loopTask = Task.Factory.StartNew(Loop, TaskCreationOptions.LongRunning);
}

void Loop()
{
    while (true)
    {
        if (cancellationTokenSource.IsCancellationRequested)
            break;

        Thread.Yield();
    }
}

void StopLoop()
{
    cancellationTokenSource.Cancel();

    loopTask = null;
    cancellationTokenSource = null;
}

Sinalizador de saída:

volatile bool exitLoop;
Task loopTask;

void StartLoop()
{
    exitLoop = false;
    loopTask = Task.Factory.StartNew(Loop, TaskCreationOptions.LongRunning);
}

void Loop()
{
    while (true)
    {
        if (exitLoop)
            break;

        Thread.Yield();
    }
}

void StopLoop()
{
    exitLoop = true;

    loopTask = null;
}

Para mim, não faz nenhuma diferença usar o CancellationTokenSource, mas existe algum motivo pelo qual o token de cancelamento possa ser adicionado como parâmetro à fábrica de tarefas?

Muito obrigado por qualquer tipo de resposta.

Melhores ragards teamol

questionAnswers(1)

yourAnswerToTheQuestion