zoukankan      html  css  js  c++  java
  • 大四中软实习笔记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;
    }

  • 相关阅读:
    LeetCode翻转矩阵后的得分-Python3<六>
    LeetCode子域名访问计数-Python3.7<五>
    LeetCode 键盘行-Python3.7<四>
    流程控制<二>
    Numbers、Strings、Lists 笔记<一>
    LeetCode-数组操作-Python<三>
    LeetCode链表相加-Python<二>
    LeetCode两数之和-Python<一>
    使用Django创建网站项目<二>
    Windows下vue-cli脚手架搭建入门<一>
  • 原文地址:https://www.cnblogs.com/blueswitkey/p/2957949.html
Copyright © 2011-2022 走看看