zoukankan      html  css  js  c++  java
  • 线程同步(临界区的使用)

    1.SingalObject


    #include <windows.h>
    #include <iostream>

    using namespace std;

    CRITICAL_SECTION cs;

    int m = 0;
    int n = 0;
    DWORD WINAPI ThreadProc(LPVOID Param);
    int main()
    {


    InitializeCriticalSection(&cs);



    int a = 10;
    HANDLE ThreadHandle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc,NULL, 0, NULL);

    EnterCriticalSection(&cs);
    for (int i = 0;i<1000;i++)
    {
    m++;
    n++;
    printf("Main Thread ");
    }
    LeaveCriticalSection(&cs);
    WaitForSingleObject(ThreadHandle, INFINITE);

    1.SingalObeject
    DeleteCriticalSection(&cs);
    printf("%d %d ", m, n);

    }

    DWORD WINAPI ThreadProc(LPVOID Param)
    {
    EnterCriticalSection(&cs);
    for (int i = 0; i < 1000; i++)
    {


    printf("Sub Thread ");
    m++;
    n++;
    }
    LeaveCriticalSection(&cs);
    return 0;
    }

    2.MultipleObject


    #include <windows.h>
    #include <iostream>

    using namespace std;

    CRITICAL_SECTION cs;


    int m = 0;
    int n = 0;
    DWORD WINAPI ThreadProc(LPVOID Param);

    int main()
    {

    HANDLE ThreadHandle[5] = { 0 };
    InitializeCriticalSection(&cs);

    for (int i = 0; i < 5; i++)
    {
    ThreadHandle[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, NULL, 0, NULL);
    }


    WaitForMultipleObjects(5, ThreadHandle, TRUE, INFINITE);
    DeleteCriticalSection(&cs);
    printf("%d %d ", m, n);
    }

    DWORD WINAPI ThreadProc(LPVOID Param)
    {
    CRITICAL_SECTION cs;

    EnterCriticalSection(&::cs);   //注意(&::cs)
    for (int i=0;i<10000;i++)
    {
    m++;
    n++;
    }
    LeaveCriticalSection(&::cs);  //注意(&::cs)

    return 0;
    }



  • 相关阅读:
    webpack devServer配置项的坑
    app混合开发 fastlick.js 在ios上 input标签点击 不灵敏 处理
    vue 学习八 自定义指令
    Verilog数值大小比较
    Verilog实现Matlab的fliplr函数
    基本不等式
    如何读取ila数据
    Xilinx FPGA时钟IP核注意事项
    FPGA Turbo译码器注意事项
    EbN0转SNR
  • 原文地址:https://www.cnblogs.com/lsh123/p/5891874.html
Copyright © 2011-2022 走看看