• 大四中软实习笔记201303011锁


    1 加锁的概念

    2 使用window API 函数的 互斥量(互斥对象)
    步骤:
    1 在主线程中建立1个锁
    HANDLE locker=CreateMutex(NULL,FALSE,NULL);

    2 在子线程的入口函数 的 合适位置 加锁
    WaitForSingleObject(locker,INFINITE);

    3 在子线程的入口函数 的 合适位置 解锁
    ReleaseMutex(locker);


    代码:
    #include <stdio.h>
    #include <string.h>
    #include <windows.h>

    DWORD WINAPI ThreadProc(LPVOID lpParameter)
    {
       
        //lock();
        WaitForSingleObject(locker,INFINITE);        //加锁,但位置不好。因为实际上成了 单子线程
        for(int i=0;i<50;i++)
        {   
            int *arrray1=(int *)lpParameter;
            GetCurrentThread();
            //printf("%x:",GetCurrentThread());
            printf("%d\n",(*arrray1));
            (*arrray1)++;
            (*(arrray1+1))--;

        }
        //unlock();
        ReleaseMutex(locker);

        return 0;
    }


    int main()
    {
        //int ticket=0;
        //int total=100;

        int array1[2]={0,100};
        HANDLE locker=CreateMutex(NULL,FALSE,NULL);

        LPVOID lpParemeter=(LPVOID)array1;

        HANDLE hThread1 =CreateThread(NULL,0,ThreadProc,lpParemeter,0,NULL);
        HANDLE hThread2 =CreateThread(NULL,0,ThreadProc,lpParemeter,0,NULL);
        CloseHandle(hThread1);
        CloseHandle(hThread2);

        Sleep(2000);


        //printf("%d    %d\n",array1[0],array1[1]);


        return 0;
    }

  • 相关阅读:
    HDU4126
    训练赛Day6-The 36th ACMICPC Asia Regional Beijing Site
    弦图
    HDU4821 字符串哈希+尺取
    HDU1854
    HDU1166
    输入输出挂
    LightOj 1027 数学期望
    HDU
    HDU
  • 原文地址:https://www.cnblogs.com/blueswitkey/p/2957949.html
Copyright © 2020-2023  润新知