zoukankan      html  css  js  c++  java
  • 016 Event互斥体 8

    ●  CreateMutex

      函数原型

    1 HANDLE WINAPI CreateMutex(
    2   _In_opt_ LPSECURITY_ATTRIBUTES lpMutexAttributes,
    3   _In_     BOOL                  bInitialOwner,
    4   _In_opt_ LPCTSTR               lpName
    5 );

      ○ 参数1:lpMutexAttributes [in, optional]
        指向SECURITY_ATTRIBUTES结构的指针。如果此参数为NULL,则处理不能由子进程继承。

      ○ 参数2:bInitialOwner [in]
        如果此值为真,且调用者创建互斥对象,则调用线程获得互斥对象的初始所有权。否则,调用线程不获取互斥对象的所有权。要确定调用者是否创建互斥对象,请参见返回值部分。

      ○ 参数3:lpName [in, optional]
        互斥对象的名称。名称仅限于MAX_PATH字符。名称比较是区分大小写的。

      ○ Return value返回值
        如果函数成功,返回值就是新创建的互斥对象的句柄。
        如果函数失败,返回值为NULL。要得到扩展的错误信息,请调用GetLastError。

    ●  ReleaseMutex

      函数原型

    1 BOOL WINAPI ReleaseMutex(
    2   _In_ HANDLE hMutex
    3 );

      ○ 参数1:hMutex [in]
        一个对互斥对象的句柄。CreateMutex或OpenMutex函数返回这个句柄。  

      ○ Return value返回值
        如果函数成功,返回值为非零。
        如果函数失败,返回值为零。要得到扩展的错误信息,请调用GetLastError。

     1 #define UNICODE
     2 #include <stdio.h>
     3 #include <process.h>
     4 #include <windows.h>
     5 //互斥体            关键段 -> 线程同步
     6 //每个互斥体保存了一个线程ID ->
     7 //线程 ID -> 非0(无信号) 0(有信号)
     8 int main()
     9 {
    10     HANDLE hMuex = CreateMutex( nullptr, TRUE, nullptr);
    11     //无论Wait都是有信号
        //如果像要别的线程使用到就需要释放 ReleaseMutes(hMuex); 12 WaitForSingleObjct(hMutex, INFINITE); 13 WaitForSingleObjct(hMutex, INFINITE); 14 WaitForSingleObjct(hMutex, INFINITE); 15 WaitForSingleObjct(hMutex, INFINITE); 16 WaitForSingleObjct(hMutex, INFINITE); 17 18 return 0; 19 }
     1 #define UNICODE
     2 #include <stdio.h>
     3 #include <process.h>
     4 #include <windows.h>
     5 //互斥体            关键段 -> 线程同步
     6 //每个互斥体保存了一个线程ID ->
     7 //线程 ID -> 非0(无信号) 0(有信号)
     8 HANDLE gMutex;
     9 unsigned __stdcall ThreadFunc(void* lParam)
    10 {
    11     WaitForSingleObjct(gMutex, INFINITE);
    12     return 0;
    13 }
    14 int main()
    15 {
    16     gMutex = CreateMutex( nullptr, TRUE, nullptr);
    17     HANDLE hThread = (HANDLE)__beginthreadex(nullptr, 0, ThreadFunc, nullptr, 0, nullptr);
    18     WaitForSingleObject(hThread, INFINITE);
    19     //无论Wait都是有信号的
    20 
    21     return 0;
    22 }
     1 #define UNICODE
     2 #include <stdio.h>
     3 #include <process.h>
     4 #include <windows.h>
     5 //互斥体            关键段 -> 线程同步
     6 //每个互斥体保存了一个线程ID ->
     7 //线程 ID -> 非0(无信号) 0(有信号)
     8 HANDLE gMutex;
     9 unsigned __stdcall ThreadFunc(void* lParam)
    10 {
    11     WaitForSingleObjct(gMutex, INFINITE);
    12     return 0;
    13 }
    14 int main()
    15 {
    16     gMutex = CreateMutex( nullptr, TRUE, nullptr);
    17     ReleaseMutex(gMutex);
    18     HANDLE hThread = (HANDLE)__beginthreadex(nullptr, 0, ThreadFunc, nullptr, 0, nullptr);
    19     //ReleaseMutex(gMutex);
    20     WaitForSingleObject(hThread, INFINITE);
    21     //无论Wait都是有信号的
    22 
    23     return 0;
    24 }
  • 相关阅读:
    最新免费网络加速器,游戏加速器下载_网络加速器永久免费版哪个好?
    HTML中特殊符号编码对照表,html特殊符号编码都有哪些?
    超融合架构在汽车行业前景及未来发展
    好用的前端开发小工具
    layui省市区三级联动城市选择
    企业超融合解决方案怎么做?超融合基础架构 超融合优势是什么?
    最新免费网络加速器
    什么是超融合?
    面临网络安全危机时需要思考的20个问题
    2019年超融合将飞速发展 三大趋势不容错过
  • 原文地址:https://www.cnblogs.com/sdk123/p/7140441.html
Copyright © 2011-2022 走看看