Розуміння потоків C++: Повний посібник

C++ | Поради

pic

вступ

Потоки в C++ дозволяють розробникам виконувати кілька завдань одночасно, що робить додатки більш ефективними та відгукливими. У цій статті ми розглянемо, як використовувати потоки в C++ з прикладами та кращими практиками.

Що таке потік?

Потік — це легкий процес, який може працювати одночасно з іншими потоками в тій самій програмі. C++ надає клас std::thread для керування потоками, що дозволяє розробникам легко створювати та контролювати потоки.

Базовий приклад потоку

Розпочнемо з простого прикладу, де потік безперервно виводить повідомлення кожні дві секунди:

#include   
#include   
#include   

static bool s_Finished = false;  

void DoSomeWork()  
{  
 using namespace std::literals::chrono_literals;  
 while(!s_Finished)n";  
 std::this_thread::sleep_for(2s);  
 }  
}  

int main()  
{  
 std::thread worker(DoSomeWork);  
 std::cin.get();  
 s_Finished = true;  
 worker.join();  
 std::coutn";  
 return 0;  
}

Пояснення:

  1. Функція DoSomeWork працює безперервно, поки s_Finished не стане true.
  2. Створюється потік std::thread для виконання функції DoSomeWork.
  3. Використовуємо std::cin.get(), щоб почекати введення користувача перед зупинкою потоку.
  4. Потік приєднується за допомогою worker.join(), щоб забезпечити його завершення до виходу з програми.

Запуск кількох потоків

Ви можете запускати кілька потоків для одночасного виконання завдань:

#include   
#include   
#include   

void PrintNumbers(int start, int end)  
{  
 for (int i = start; i <= end; ++i)  
 {  
 std::cout << "Number: " << i << "\n";  
 }  
}  

int main()  
{  
 std::vector threads;  
 for (int i = 0; i < 5; ++i)  
 {  
 threads.emplace_back(PrintNumbers, i * 10, (i + 1) * 10 - 1);  
 }  

 for (auto& thread : threads)  
 {  
 thread.join();  
 }  

 std::cout << "All threads completed!\n";  
 return 0;  
}

Основні висновки:

  • Створення потоку: Використовуйте std::thread, щоб легко створювати потоки.
  • Синхронізація потоків: Використовуйте join(), щоб забезпечити завершення потоків до виходу з програми.
  • Кілька потоків: Використовуйте цикли для запуску та управління кількома потоками.

YouTube відео

Висновок

Потоки в C++ — це потужні інструменти для паралельного програмування, що дозволяють покращити продуктивність завдань, які можна виконувати одночасно. Розуміючи основи керування потоками та синхронізації, ви можете писати ефективні багатопоточні додатки.

Перекладено з: Understanding C++ Threads: A Complete Guide

Leave a Reply

Your email address will not be published. Required fields are marked *