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



  • 相关阅读:
    响应式网页设计初探
    karma 启动提示PhantomJS not found on PATH
    Vuex 拾遗
    cStringIO 实现指定大小的字符串缓存
    javascript 计算文件MD5 浏览器 javascript读取文件内容
    springmvc值传递
    SpringMVC
    spring事务
    spring整合JDBC
    spring-test与junit
  • 原文地址:https://www.cnblogs.com/lsh123/p/5891874.html
Copyright © 2011-2022 走看看