Sobes.tech
Junior — Middle

Кои са основните механизми, които знаете за управление на многопоточността?

sobes.tech AI

Отговор от AI

Основните механизми за управление на многопоточността в C/C++ включват:

  • Мютекси (mutexes) — за взаимно изключване при достъп до споделени ресурси.
  • Условни променливи (condition variables) — за синхронизиране на нишки, очакване на определени условия.
  • Семафори (semaphores) — за ограничаване на броя на нишките, работещи едновременно с даден ресурс.
  • Атомарни операции (atomic operations) — за безопасна промяна на променливи без блокиране.
  • Нишки (std::thread) — създаване и управление на нишки.

Пример за използване на мютекс:

#include <iostream>
#include <thread>
#include <mutex>

std::mutex mtx;
int counter = 0;

void increment() {
    for (int i = 0; i < 1000; ++i) {
        std::lock_guard<std::mutex> lock(mtx);
        ++counter;
    }
}

int main() {
    std::thread t1(increment);
    std::thread t2(increment);
    t1.join();
    t2.join();
    std::cout << "Брояч: " << counter << std::endl;
    return 0;
}