zoukankan      html  css  js  c++  java
  • 进程死锁模拟

    #include <stdio.h>
    #include <windows.h>
    
    
    int tickets=30;
    /*临界区对象*/
    CRITICAL_SECTION g_csA,g_csB;
    /*线程数据信息*/
    DWORD WINAPI Fun1Proc(LPVOID lpParameter)
    {
        while(1)
        {
            /*进入临界区*/
            EnterCriticalSection(&g_csA);
            Sleep(1);
            if(tickets>0)
            {
                EnterCriticalSection(&g_csB);
                Sleep(1);
                printf("thread1 sell ticket:%d\n",tickets--);
                /*离开临界区*/
                LeaveCriticalSection(&g_csA);
            }
            else
            {
                LeaveCriticalSection(&g_csA);
                break;
            }
        }
        return 0;
    }
    
    DWORD WINAPI Fun2Proc(LPVOID lpParameter)
    {
        while(1)
        {
            EnterCriticalSection(&g_csB);
            Sleep(1);
            if(tickets>0)
            {
                EnterCriticalSection(&g_csA);
                Sleep(1);
                printf("thread2 sell ticket:%d\n",tickets--);
                LeaveCriticalSection(&g_csB);
            }
            else
            {
                LeaveCriticalSection(&g_csB);
                break;
            }
        }
        return 0;
    }
    
    int main()
    {
        HANDLE hThread1,hThread2;
        /*创建线程*/
        hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
        hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
        CloseHandle(hThread1);
        CloseHandle(hThread2);
        /*创建临界区对象*/
        InitializeCriticalSection(&g_csA);
        InitializeCriticalSection(&g_csB);
        Sleep(1000);
        /*释放临界区对象资源*/
        DeleteCriticalSection(&g_csA);
        return 0;
    }
  • 相关阅读:
    第六次作业SSM
    第五次作业——MVC2项目实践
    第四次作业——JSP显示新闻
    第三次作业——servlet应用
    第二次作业——模仿登录页面
    第一次作业——Java web基础
    Alpha项目测试
    作业三
    第二次作业
    第一次阅读作业-201731062609-庞斌
  • 原文地址:https://www.cnblogs.com/NoSoul/p/2552255.html
Copyright © 2011-2022 走看看