Разница между CancellationTokenSource и флагом выхода для выхода из цикла задач

Мне было интересно, есть ли какая-либо разница между завершением задачи цикла с CancellationTokenSource и флагом выхода

CancellationTokenSource:

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;
}

Флаг выхода:

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;
}

Для меня это не имеет никакого смысла использовать CancellationTokenSource, кстати, есть ли какая-либо причина, почему токен отмены может быть добавлен в качестве параметра к фабрике задач?

Большое спасибо за любой ответ.

Лучший тряпичный тандоль

Ответы на вопрос(1)

Ваш ответ на вопрос