对银行的某一个公共账户count,原有存款1000元,现客户1和客户2各自从不同的储蓄所同时向该账户存入各1000元。编写程序实现系统对公共账户count的互斥访问。使用V C++回答,并给出文件创建过程
时间: 2024-11-17 19:28:32 浏览: 14
在C++中,为了实现对银行公共账户count的互斥访问,通常我们会使用线程同步机制,比如C++11引入的std::mutex。以下是一个简单的示例,展示了如何使用`std::mutex`来保护共享资源:
```cpp
#include <iostream>
#include <thread>
#include <mutex>
class BankAccount {
public:
BankAccount() : balance(1000), mutex{} {}
void deposit(int amount) {
std::lock_guard<std::mutex> lock(mutex);
balance += amount;
std::cout << "Deposit by customer " << std::this_thread::get_id() << ", new balance: " << balance << "\n";
}
private:
int balance;
std::mutex mutex; // 互斥锁
};
int main() {
BankAccount account;
std::thread t1(account.deposit, 1000);
std::thread t2(account.deposit, 1000);
t1.join();
t2.join();
std::cout << "Final balance: " << account.balance << "\n";
return 0;
}
```
在这个例子中,`deposit`方法被封装在一个`std::lock_guard`中,它会自动在离开作用域时释放互斥锁,保证了在同一时间只有一个线程能够修改账户余额。
文件创建过程(假设这是源代码文件,例如`bank_account.cpp`):
1. 使用文本编辑器打开一个新文件,保存为`.cpp`格式,例如:
```
bank_account.cpp
```
2. 将上述代码复制到这个文件中。
3. 如果使用的是CMake等构建工具,需要添加对应的C++编译规则。对于基本的项目,可以直接通过命令行编译并链接,如g++编译:
```sh
g++ -o bank_account bank_account.cpp -std=c++11 -lpthread
```
4. 运行生成的可执行文件`bank_account`,观察输出结果。
阅读全文