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