Раскажите как работает thread

Можете рассказать про эту библиотеку? просто для примера у нас есть змейка и надо чтоб генерировалась еда параллельно с прощитыванием хвоста и тд... пробывал без него но задумка в том что со временем змейка ускоряется и тогда не получается... даже с ввелением переменой скорости.


Ответы (1 шт):

Автор решения: bloody

thread - это библиотека для работы с потоками. Потоки нужны для того, чтобы какой-то код выполнялся параллельно с основным потоком. Если на примере, то:

#include <iostream>
#include <thread>

using namespace std;

void mythread() // Функция которая будет выполняться потоком
{
    while (1)
    {
        cout << "Second thread!!!" << endl;
    }
}

int main()
{
    thread call_mythread(&mythread); // Чтобы создать поток нужно использовать класс thread и в его конструкторе передать адрес функции которая будет выполняться потоком. Аргументы функции можно передать сразу после функции.
    while (1)
    {
        cout << "First thread!!!" << endl;
    }
    system("PAUSE");
    return 1;
}

Код выше будет выводить текст "First thread!!!" и "Second thread!!!" без порядка. То есть если при работе с 1 потоком ваш код выполнялся сверху вниз, то с потоком вы можете сделать так, чтобы 2 куска кода работали одновременно.

У класса thread есть несколько методов:

get_id() - получить уникальный идентификатор потока, который выдаётся ОС

join() - завершить поток

(Их больше, но это самые важные)

Потоки используют так же для более быстрой работы программы. Например пока один поток обучает нейросеть, другой может вычислять сложный математический пример. Но не нужно этим злоупотреблять - если код достаточно легко выполняется - создание потока под него будет наоборот медленней, нежели выполнить его сразу

→ Ссылка