进程中调用CreateMutex

简介: <p>// TestStorage.cpp : 定义控制台应用程序的入口点。<br> //</p> <p>#include "stdafx.h"<br> #include <Windows.h><br> #include <process.h></p> <p>//#define MUTEX_DBG</p> <p>UINT WINAPI Thread1(L

// TestStorage.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <Windows.h>
#include <process.h>

//#define MUTEX_DBG

UINT WINAPI Thread1(LPVOID para)
{
#ifdef MUTEX_DBG
 HANDLE* phMutex = (HANDLE*)para;

 WaitForSingleObject(*phMutex,INFINITE);
#endif
  printf("Enter Thread1/n");
  printf("I'm sleeping……/n");
  
  Sleep(1000);
  
  printf("Leave Thread1/n");

#ifdef MUTEX_DBG
 ReleaseMutex(*phMutex);
#endif

 return 0;
}
UINT WINAPI Thread2(LPVOID para)
{
#ifdef MUTEX_DBG
 HANDLE* phMutex = (HANDLE*)para;

 WaitForSingleObject(*phMutex,INFINITE);
#endif
 
  printf("Enter Thread2/n");
  printf("I'm sleeping……/n");
  
  Sleep(1000);
  
  printf("Leave Thread2/n");
 
#ifdef MUTEX_DBG
 ReleaseMutex(*phMutex);
#endif
 
 return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
 HANDLE hMutex = NULL;
#ifdef MUTEX_DBG
 hMutex = CreateMutex(NULL,FALSE,NULL);
#endif

 HANDLE hThread1 = (HANDLE)::_beginthreadex(NULL,0,Thread1,&hMutex,0,NULL);
 HANDLE hThread2 = (HANDLE)::_beginthreadex(NULL,0,Thread2,&hMutex,0,NULL);

 Sleep(4000);

 if(hThread1)
  CloseHandle( hThread1 );

 if(hThread2)
  CloseHandle( hThread2 );

 return 0;
}

相关文章
|
1月前
|
Linux
一个进程最多可以创建多少个线程基本分析
一个进程最多可以创建多少个线程基本分析
38 1
|
9月前
|
调度
进程与线程的区别
进程与线程的区别
41 0
|
5月前
|
程序员 Linux Shell
【CSAPP】进程控制 | 系统调用错误处理 | 进程状态 | 终止进程 | 进程创建 | 回收子进程 | 与子进程同步(wait/waitpid) | execve 接口
【CSAPP】进程控制 | 系统调用错误处理 | 进程状态 | 终止进程 | 进程创建 | 回收子进程 | 与子进程同步(wait/waitpid) | execve 接口
52 0
|
6月前
|
存储 调度
程序、进程、线程的区别
程序、进程、线程的区别
455 3
|
12月前
|
C#
C#开发:执行进程等待
C#开发:执行进程等待
163 0
|
存储 Java 调度
一、程序、进程、线程
计算机程序(Computer Program),港、台译做电脑程式。计算机程序是一组计算机能识别和执行的指令,可以运行于电子计算机上,满足人们某种需求的信息化工具。
116 0
个人理解进程和线程的主要区别
个人理解进程和线程的主要区别
|
Linux
进程的创建
进程的创建
71 0
|
缓存 监控 测试技术
【Linux进程控制】进程创建 | 进程终止 | 进程等待 | 进程替换
本文主要学习理解 fork 的返回值、写时拷贝的工作细节、为什么要存在写时拷贝;进程退出码、进程退出的场景及常见的退出方法、对比 man 2 _exit 和 man 3 exit;进程终止、操作系统怎么进行释放资源、池的概念;进程等待的价值、进程等待的方法 wait 和 waitpid(常用)、int* status、阻塞和非阻塞、如何理解等待、W IFEXITED、WEXITSTATUS、WTERMSIG;什么是进程替换 && 为什么要进程替换、替换原理、7个exec系列的替换函数、模拟shell解释器;
285 1
【Linux进程控制】进程创建 | 进程终止 | 进程等待 | 进程替换
|
资源调度 并行计算 调度
进程与线程有什么区别
进程与线程有什么区别