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;
    }



  • 相关阅读:
    Ant: Class not found: javac1.8
    (转)ant 使用指南
    炼数成金(dataguru)IT技能修炼
    [原创]记我的6年测试经历
    CentOS6.5 安装并配置vsftpd
    炫龙炎魔T1笔记本 Win7 系统安装
    Oracl数据库+PL/SQL安装与配置
    C# 面试题
    Linux安装Python3后,如何使用pip命令
    CentOS7 Python2 和Python3 共存(Python3安装)【转】
  • 原文地址:https://www.cnblogs.com/lsh123/p/5891874.html
Copyright © 2011-2022 走看看