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;
}