概述
多线程编程的数据同步是重要的内容,这是为了保证数据的一致性,不因为并发而出现错乱,线程可使用并发原语,确保程序行为的确定性、可靠性。
说明
lock_guard是互斥体上的一个封装器,该封装器会自动对对应的互斥体上锁,到作用域后自动解锁,如代码中采用花括号
CMake
比较简单,略
测试代码
#include <chrono>
#include <iostream>
#include <mutex>
#include <thread>
std::mutex m;
void worker(int index) {
for (int i = 0; i < 10; i++) {
{
std::lock_guard<std::mutex> g(m);
std::cout << "Worker " << index << " begins" << std::endl;
std::this_thread::sleep_for(std::chrono::milliseconds(50));
std::cout << "Worker " << index << " ends" << std::endl;
}
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
}
int main() {
std::thread worker1(worker, 1);
std::thread worker2(worker, 2);
worker1.join();
worker2.join();
std::cout << "Done" << std::endl;
}
我公司承接各类技术服务,主要聚焦于:stm32、单片机、嵌入式、QT应用开发、Web+Python+Django应用开发。欢迎合作。