对银行的某一个公共账户count,原有存款1000元,现客户1和客户2各自从不同的储蓄所同时向该账户存入各1000元。编写程序实现系统对公共账户count的互斥访问。用C++回答问题
时间: 2024-11-18 07:27:00 浏览: 9
Java设计一个银行帐户类(继承与多态)
5星 · 资源好评率100%
在C++中,为了实现对公共账户count的互斥访问,防止并发修改导致的数据不一致,我们可以利用线程同步机制,如`std::mutex`。以下是简单的实现思路:
```cpp
#include <iostream>
#include <thread>
#include <mutex>
class Account {
private:
int count = 1000;
std::mutex mtx; // 用于互斥锁
public:
void deposit(int client) {
std::lock_guard<std::mutex> lock(mtx); // 获取锁
count += 1000;
std::cout << "Client " << client << " deposited, new balance: " << count << std::endl;
}
};
int main() {
Account account;
std::thread t1(account.deposit, 1);
std::thread t2(account.deposit, 2);
t1.join();
t2.join();
return 0;
}
```
在这个例子中,我们创建了一个Account类,包含一个整型变量count和一个互斥锁mtx。deposit方法需要先获取互斥锁(通过`std::lock_guard`自动管理锁的生命周期),然后更新账户余额并打印信息。这样,两个客户端(线程t1和t2)在任何时候都只能有一个访问账户,保证了数据的一致性。
阅读全文