﻿# V1079\. Parameter of 'std::stop\_token' type is not used inside function's body\.

Диагностическое правило сигнализирует о том, что функция принимает параметр типа 'std::stop\_token' и никак не использует его\. Такой код потенциально может привести к проблемам\.

Начиная со стандарта C\+\+20 в стандартной библиотеке появился класс 'std::jthread'\. Это альтернатива классу 'std::thread', которая имеет две новых возможности\. Первая — автоматическое присоединение, которое достигается за счёт вызова функций 'request\_stop' и 'join' в деструкторе\. Вторая — возможность прерывания этого потока при помощи объекта класса 'std::stop\_token'\. Рассмотрим синтетический пример:

```cpp
#include <thread>
#include <vector>

struct HugeStruct { .... };
HugeStruct LoadHugeData(std::string_view key);

void worker(std::stop_token st, ....)
{
  auto keys = ....;
  for (auto key : keys)
  {
    auto data = LoadHugeData(key);

    // Do something with data
  }
}

void foo()
{
  using namespace std::literals;

  std::jthread thread { worker };
  // ....
}
```

Функция производит последовательную загрузку данных большого размера\. Реализация имеет возможность прерывания такой операции, однако параметр 'st' для получения сигнала об остановке не используется\. Такой код выглядит подозрительно и помечается анализатором как место потенциальной ошибки\.

В качестве исправления можно предложить следующий вариант:

```cpp
#include <thread>
#include <vector>

struct HugeStruct { .... };
HugeStruct LoadHugeData(std::string_view key);

void worker(std::stop_token st, ....)
{
  auto keys = ....;
  for (auto key : keys)
  {
    if (st.stop_requested())
    {
      // Stop execution here
    }

    auto data = LoadHugeData(key);

    // Do something with data
  }
}

void foo()
{
  using namespace std::literals;

  std::jthread thread { worker };
  // ....
}
```

Теперь последовательная загрузка данных может быть прервана\. Функция 'worker' прекратит загрузку элементов в случае получения запроса отмены операции \(функции 'request\_stop'\) из другого потока\.