设计一个模拟用户从银行取款的应用程序。设某银行帐户存款额的初值是2000元,用线程模拟两个用户从银行取款的情况。
时间: 2023-04-06 10:01:47 浏览: 169
银行账户的存取款线程设计
好的,我可以回答这个问题。以下是一个简单的模拟用户从银行取款的应用程序:
#include <stdio.h>
#include <pthread.h>
int balance = 2000; // 初始存款额
void *withdraw(void *arg) {
int amount = *(int*)arg; // 取款金额
if (balance >= amount) {
balance -= amount;
printf("取款成功,取款金额为%d元,余额为%d元\n", amount, balance);
} else {
printf("余额不足,无法取款\n");
}
pthread_exit(NULL);
}
int main() {
pthread_t tid1, tid2;
int amount1 = 1000, amount2 = 1500; // 两个用户的取款金额
// 创建两个线程,分别模拟两个用户从银行取款
pthread_create(&tid1, NULL, withdraw, &amount1);
pthread_create(&tid2, NULL, withdraw, &amount2);
// 等待两个线程结束
pthread_join(tid1, NULL);
pthread_join(tid2, NULL);
return 0;
}
在这个程序中,我们使用了 pthread 库来创建两个线程,分别模拟两个用户从银行取款。每个线程都接受一个指向取款金额的指针作为参数,然后检查余额是否足够,如果足够则进行取款操作,否则输出错误信息。最后,我们使用 pthread_join 函数等待两个线程结束。
阅读全文