Как правильно создать потоки в c++?

Пользователь

от dayna , в категории: JavaScript , 8 месяцев назад

Как правильно создать потоки в c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от karen.wisozk , 8 месяцев назад

@dayna 

В C++ существует несколько способов создания потоков. Вот некоторые из них:

  1. С использованием библиотеки
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include 
#include 

// Функция, которую будет выполнять поток
void threadFunction() {
    std::cout << "Hello from thread!" << std::endl;
}

int main() {
    // Создание нового потока и его выполнение
    std::thread threadObj(threadFunction);

    // Ожидание завершения потока
    threadObj.join();

    return 0;
}


  1. С использованием лямбда-функции:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#include 
#include 

int main() {
    // Создание нового потока и его выполнение с помощью лямбда-функции
    std::thread threadObj([]{
        std::cout << "Hello from thread!" << std::endl;
    });

    // Ожидание завершения потока
    threadObj.join();

    return 0;
}


  1. С использованием функционального объекта (функтора):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#include 
#include 

// Функтор
struct ThreadFunctor {
    void operator()() {
        std::cout << "Hello from thread!" << std::endl;
    }
};

int main() {
    // Создание нового потока и его выполнение с использованием функтора
    std::thread threadObj(ThreadFunctor());

    // Ожидание завершения потока
    threadObj.join();

    return 0;
}


Во всех трех примерах поток создается с помощью конструктора класса std::thread и выполняется функция/лямбда-функция/функтор. Затем метод join() вызывается для ожидания завершения потока.