您的位置:首页 > 其它

多线程之临界区、互斥锁

2016-04-05 16:33 309 查看
互斥锁,是一种信号量,常用来防止两个进程或线程在同一时刻访问相同的共享资源,无序的。

// 线程.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include <Windows.h>

int k = 0;

int i = 0,j = 0;

int conductor_a=0,conductor_b=0,conductor_c=0,conductor_d=0;

CRITICAL_SECTION cs;

void thread(void *a)

{

     k++;

     int man = k;

   while (1)

   {

       Sleep(1);

       EnterCriticalSection(&cs);

       if( i > 99)

       {

           if (0 == j)

           {

                printf("1:%d  2:%d  3:%d  4:%d \n",conductor_a,conductor_b,conductor_c,conductor_d);

                j = 1;

           }

          

           break;

       }

       else

       {

           i++;

           printf("售票员%d 卖出座位号:%d\n",man,i);

           switch(man)

           {

             case 1:conductor_a++;break;

             case 2:conductor_b++;break;

             case 3:conductor_c++;break;

             case 4:conductor_d++;break;

           }

       }

       LeaveCriticalSection(&cs);

   }

 

}

int main(int argc, char* argv[])

{

    

    InitializeCriticalSection(&cs);

    HANDLE    hThred[4];

    EnterCriticalSection(&cs);

    for(int i = 0; i < 4 ; i ++)

    {

        hThred[i] = CreateThread(  0, 0, (LPTHREAD_START_ROUTINE)thread, 0, 0, 0 );

    }

    LeaveCriticalSection(&cs);

    WaitForMultipleObjects(4,hThred,true,0xFFFFFFFF);

    while(1);

    

    //DeleteCriticalSection(&cs);

    return 0;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: