#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // 定义一个互斥锁
void print_block(int n, char c) {
// 加锁
mtx.lock();
for (int i = 0; i < n; ++i) {
std::cout << c;
}
std::cout << '\n';
// 解锁
mtx.unlock();
}
int main() {
std::thread th1(print_block, 5, '*');
std::thread th2(print_block, 5, '$');
th1.join();
th2.join();
return 0;
}
引入头文件:
#include <iostream>:用于标准输入输出。#include <thread>:用于创建和管理线程。#include <mutex>:用于线程同步的互斥锁。定义互斥锁:
std::mutex mtx;:定义了一个全局的互斥锁对象 mtx,用于保护共享资源(如 std::cout)。函数 print_block:
n 表示要打印的字符数量,c 表示要打印的字符。mtx.lock() 对共享资源进行加锁,确保同一时间只有一个线程可以访问该资源。mtx.unlock() 解锁,允许其他线程访问共享资源。主函数 main:
th1 和 th2,分别调用 print_block 函数,传入不同的参数。join 等待两个线程完成。通过这种方式,确保了多个线程在访问共享资源时不会发生冲突,从而实现了线程同步。
上一篇:c++ operator
下一篇:c++ round
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站