对银行的某一个公共账户count,原有存款1000元现客户1和客户2各自从不同的储蓄所同时向该账户存入 各1000元。要求系统保证对公共账户count的互斥访问。使用vc6.0写出代码
时间: 2024-11-17 07:30:40 浏览: 2
在Windows环境下,使用VC++6.0实现银行账户的互斥访问通常会涉及使用临界区(Critical Section)或者更现代的线程同步机制如C++11的std::mutex。这里我会提供一个基本的使用临界区(CRITICAL_SECTION)的例子,因为VC6.0支持这个功能。
```cpp
#include <windows.h>
#include <iostream>
// 定义全局变量
CRITICAL_SECTION cs;
int accountCount = 0;
// 初始化临界区
void InitializeCriticalSection()
{
InitializeCriticalSection(&cs);
}
// 销毁临界区
void DeleteCriticalSection()
{
DeleteCriticalSection(&cs);
}
// 防止并发修改count的方法
void SafeIncrementCounter()
{
EnterCriticalSection(&cs); // 进入临界区
try {
accountCount += 2; // 存款操作
std::cout << "Client 1 and Client 2 each deposited 1000 into the account. Current count: " << accountCount << std::endl;
} finally {
LeaveCriticalSection(&cs); // 离开临界区,确保释放资源
}
}
int main()
{
InitializeCriticalSection();
// 并发执行存款操作
Thread thread1(SafeIncrementCounter);
Thread thread2(SafeIncrementCounter);
// 等待所有线程结束
thread1.Join();
thread2.Join();
DeleteCriticalSection(); // 关闭临界区
return 0;
}
// 使用线程函数模板
template <typename Func>
void Thread(Func func)
{
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&func, NULL, 0, NULL);
}
阅读全文