软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 电脑教程 > 编程开发 > C/C++开发 > C++多线程编程:关键代码段[临界区]实现线程同步

C++多线程编程:关键代码段[临界区]实现线程同步

DWORD WINAPI Fun1Proc(LPVOID lParam);
DWORD WINAPI Fun2Proc(LPVOID lParam);

int balance = 110;//账户余额[最少10元保底]
CRITICAL_SECTION critical;//代码临界区

/* 运用关键代码端[临界区]实现线程间同步 */
void main()
{
InitializeCriticalSection(&critical);
HANDLE hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);//线程1存钱[每次存100元,账户最多110元]
HANDLE hThread2 = CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);//线程2取钱[每次取100元,账户至少留10元]
CloseHandle(hThread1);
CloseHandle(hThread2);

Sleep(5000);
DeleteCriticalSection(&critical);
}

DWORD WINAPI Fun1Proc(LPVOID lParam)
{
int i = 50;
while (i-- > 0)
{
EnterCriticalSection(&critical);
if (balance 0)
{
EnterCriticalSection(&critical);
if (balance-100<10)
{
printf("线程2:\t账户余额:%d元,余额不足,线程2不能取款,等待线程1存款...\n",balance);
LeaveCriticalSection(&critical);
continue;
}
printf("线程2:\t账户余额%d元,线程2取款100元\n",balance);
balance-=100;
LeaveCriticalSection(&critical);
}
return 0;
}
    相关阅读
    网友评论