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 }
  • 相关阅读:
    .net ajax和后台数据简单交互。传参JSON返回
    基于layui的管理后台简单导航,简单框架布局。左侧菜单栏以及动态操作tab项
    .net使用layui框架下。绑定搜索下拉框-模糊查询
    .NET用样式做模式模态窗口层,弹出遮罩层
    .net里ajax调用后台方法返回LIST集合
    sql的行转列(case when) sqlserver.net
    查SQLSERVER MSSQL查约束是哪张表
    powerbuilder 在pb里面怎么把文件编译成exe文件
    powerbuilder datawindow给表格某列赋值或设置禁用
    powerbuilder给文本框赋值
  • 原文地址:https://www.cnblogs.com/sdk123/p/7140441.html
Copyright © 2011-2022 走看看