• 大四中软实习笔记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;
    }

  • 相关阅读:
    1、听说过Redis吗?它是什么?
    55、数据库高并发是我们经常会遇到的,你有什么好的解决方案吗?
    54、数据库如何保证持久性?
    53、数据库如何保证原子性?
    52、数据库如何保证一致性?
    注解定义、基本语法和属性
    Macbook 装机必备--开发篇
    http
    python:beaufiful
    python-yield
  • 原文地址:https://www.cnblogs.com/blueswitkey/p/2957949.html
Copyright © 2020-2023  润新知