支持并发的银行账户

实践练习C++17

简介

经过多年填表和等待,你终于获得银行执照,可以开办自己的银行了!

首先要让信息系统运行起来。忙碌一天后,系统已经支持开户、销户、存款与取款。

你没有先写测试,而是请朋友试用。仅过五分钟,一人就说钱少了。虽然你确信没有程序错误,还是查看了日志。

原来朋友把测试账号交给另一位朋友,两人同时对同一账户进行存取款,触发了并发操作。

你认为不可能有人同时访问同一账户,朋友却指出银行规则明确要求支持这一场景。因此,不支持并发就不能上线。你只好决定明天继续修复,发布至少再推迟一天。

任务说明

实现支持开户、销户、存款和取款的银行账户。

账户可以通过网页、手机和自动扣款等渠道访问,因此必须允许多个线程或进程安全并发操作。例如,多笔存取款同时发生时,读取余额与写回新余额之间不能存在竞态条件。

账户应支持关闭,关闭后的所有相关操作必须失败。