- 成员访问属性设计:
- 将账户余额等敏感数据设为私有成员变量,这样外部代码无法直接访问和修改,只能通过特定的成员函数来操作。
- 同步机制:
- 使用互斥锁(
std::mutex
)来保证在多线程环境下对账户余额操作的原子性和一致性。每次在修改或读取账户余额前锁定互斥锁,操作完成后解锁。
- 对于C++17及以上,还可以使用
std::scoped_lock
,它会在构造时自动锁定互斥锁,在析构时自动解锁,更方便且安全。
- 关键代码示例(C++):
#include <mutex>
#include <iostream>
class Account {
private:
double balance;
std::mutex mtx;
public:
Account(double initialBalance) : balance(initialBalance) {}
// 获取账户余额
double getBalance() {
std::scoped_lock lock(mtx);
return balance;
}
// 修改账户余额
void deposit(double amount) {
std::scoped_lock lock(mtx);
if (amount > 0) {
balance += amount;
}
}
bool withdraw(double amount) {
std::scoped_lock lock(mtx);
if (amount > 0 && balance >= amount) {
balance -= amount;
return true;
}
return false;
}
};