C++使用Windows API CreateMutex函数多线程编程
2016-12-28 21:00
267 查看
C++中也可以使用Windows 系统中对应的API函数进行多线程编程。使用CreateThread函数创建线程,并且可以通过CreateMutex创建一个互斥量实现线程间数据的同步:
#include <iostream>
#include <Windows.h>
using namespace std;
HANDLE hMutex = NULL; //互斥量
DWORD WINAPI thread01(LPVOID lvParamter)
{
for (int i = 0; i < 10; i++)
{
WaitForSingleObject(hMutex, INFINITE); //互斥锁
cout << "Thread 01 is working!" << endl;
ReleaseMutex(hMutex); //释放互斥锁
}
return 0;
}
DWORD WINAPI thread02(LPVOID lvParamter)
{
for (int i = 0; i < 10; i++)
{
WaitForSingleObject(hMutex, INFINITE); //互斥锁
cout << "Thread 02 is working!" << endl;
ReleaseMutex(hMutex); //释放互斥锁
}
return 0;
}
int main()
{
hMutex = CreateMutex(NULL, FALSE, (LPCWSTR)"Test"); //创建互斥量
HANDLE hThread = CreateThread(NULL, 0, thread01, NULL, 0, NULL); //创建线程01
hThread = CreateThread(NULL, 0, thread02, NULL, 0, NULL); //创建线程01
CloseHandle(hThread); //关闭句柄
system("pause");
return 0;
}
输出:
#include <iostream>
#include <Windows.h>
using namespace std;
HANDLE hMutex = NULL; //互斥量
DWORD WINAPI thread01(LPVOID lvParamter)
{
for (int i = 0; i < 10; i++)
{
WaitForSingleObject(hMutex, INFINITE); //互斥锁
cout << "Thread 01 is working!" << endl;
ReleaseMutex(hMutex); //释放互斥锁
}
return 0;
}
DWORD WINAPI thread02(LPVOID lvParamter)
{
for (int i = 0; i < 10; i++)
{
WaitForSingleObject(hMutex, INFINITE); //互斥锁
cout << "Thread 02 is working!" << endl;
ReleaseMutex(hMutex); //释放互斥锁
}
return 0;
}
int main()
{
hMutex = CreateMutex(NULL, FALSE, (LPCWSTR)"Test"); //创建互斥量
HANDLE hThread = CreateThread(NULL, 0, thread01, NULL, 0, NULL); //创建线程01
hThread = CreateThread(NULL, 0, thread02, NULL, 0, NULL); //创建线程01
CloseHandle(hThread); //关闭句柄
system("pause");
return 0;
}
输出:
相关文章推荐
- 在C++中使用Windows API发送HTTP GET请求
- C++使用Windows API CreateMutex函数多线程编程
- c#.net 通过 c++.net 使用 windows API 及unmanaged code
- C++ WINDOWS API 如何使用NMAKE和CL编译
- C++ WINDOWS API 如何使用NMAKE和CL编译
- 使用C++和Directx开发GUI(二)
- COM实现聚合所使用的C++技巧
- 使用C++和Directx开发GUI(三)
- 在C#中使用C/C++写的DLL
- C/C++中macro的一些特殊使用
- C++指针使用方法解惑
- Tuxedo 8.1 XML C++ Parser的使用(转自BEA中国网站)
- 使用C++和DirectX开发GUI - 资源编辑器及其它
- 使用 C# 和 C++.NET 开发的 .NET 应用程序实例列表
- 面向对象的Windows编程实战(上)(使用C++和Win32 API)
- 在win32 api程序中:使用C++风格的字符串
- 注意使用vc的标准c/c++库的不同版本
- 如何在C++中使用libjpeg.lib函数库
- C++ Builder和托管C++中属性的使用建议
- 使用c++实现Format函数