银行的某一个公共账户count,原有存款1000元,现客户1和客户2各自从不同的储蓄所同时向该账户存入各1000元。编写程序实现系统对公共账户count的互斥访问。用c➕➕
时间: 2024-11-17 08:28:49 浏览: 9
在C++中,为了保证银行公共账户count的互斥访问,防止并发情况下可能出现的数据不一致,我们可以使用`std::mutex`来进行线程同步。这是一个简单的例子:
```cpp
#include <iostream>
#include <thread>
#include <mutex>
class Account {
private:
int count = 1000; // 初始余额
std::mutex mtx; // 互斥锁
public:
void deposit(int amount, std::string customer) {
std::lock_guard<std::mutex> lock(mtx); // 获取锁
count += amount;
std::cout << "Customer " << customer << ", deposited " << amount << ". New balance: " << count << std::endl;
}
};
int main() {
Account account;
// 创建两个线程,分别代表客户1和客户2
std::thread thread1deposit([&account] {
account.deposit(1000, "Client1");
});
std::thread thread2deposit([&account] {
account.deposit(1000, "Client2");
});
// 等待线程结束
thread1deposit.join();
thread2deposit.join();
return 0;
}
```
在这个例子中,我们定义了一个Account类,其中`deposit`方法会对`count`变量进行操作。在方法内部,通过`std::lock_guard`自动获取并释放锁,确保了每次只有一个线程能够修改`count`,实现了互斥访问。
阅读全文