3线程
来源:互联网 发布:商务背包 知乎 编辑:程序博客网 时间:2024/05/16 05:39
#include <windows.h>
#include <iostream>
using namespace std;
static int count1 = 1;
DWORD WINAPI Fun1Proc(LPVOID lpParameter);//thread data
DWORD WINAPI Fun2Proc(LPVOID lpParameter);//thread data
DWORD WINAPI Fun3Proc(LPVOID lpParameter);//thread data
HANDLE hMutex;
void main()
{
HANDLE hThread1;
HANDLE hThread2;
HANDLE hThread3;
//创建线程
hThread1 = CreateThread(NULL, 0, Fun1Proc, NULL, 0, NULL);
hThread2 = CreateThread(NULL, 0, Fun2Proc, NULL, 0, NULL);
hThread3 = CreateThread(NULL, 0, Fun3Proc, NULL, 0, NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);
CloseHandle(hThread3);
//创建互斥对象
hMutex = CreateMutex(NULL, TRUE, (LPCWSTR)"count1");
if (hMutex)
{
if (ERROR_ALREADY_EXISTS == GetLastError())
{
return;
}
}
WaitForSingleObject(hMutex, INFINITE);
ReleaseMutex(hMutex);
ReleaseMutex(hMutex);
Sleep(4000);
}
//线程1的入口函数
DWORD WINAPI Fun1Proc(LPVOID lpParameter)//thread data
{
while (true)
{
ReleaseMutex(hMutex);
WaitForSingleObject(hMutex, INFINITE);
if (count1<100)
{
Sleep(1000);
count1+=2;
}
/*else
break;*/
ReleaseMutex(hMutex);
}
return 0;
}
//线程2的入口函数
DWORD WINAPI Fun2Proc(LPVOID lpParameter)//thread data
{
while (true)
{
ReleaseMutex(hMutex);
WaitForSingleObject(hMutex, INFINITE);
if (count1<100)
{
Sleep(2000);
count1 -= 1;
}
/*else
break;*/
ReleaseMutex(hMutex);
}
return 0;
}
//线程3的入口函数
DWORD WINAPI Fun3Proc(LPVOID lpParameter)//thread data
{
while (true)
{
ReleaseMutex(hMutex);
WaitForSingleObject(hMutex, INFINITE);
if (count1==100)
{
exit(0);
}
else if (count1 % 5 == 0)
{
cout << count1<<endl;
}
//break;
ReleaseMutex(hMutex);
}
return 0;
}
#include <iostream>
using namespace std;
static int count1 = 1;
DWORD WINAPI Fun1Proc(LPVOID lpParameter);//thread data
DWORD WINAPI Fun2Proc(LPVOID lpParameter);//thread data
DWORD WINAPI Fun3Proc(LPVOID lpParameter);//thread data
HANDLE hMutex;
void main()
{
HANDLE hThread1;
HANDLE hThread2;
HANDLE hThread3;
//创建线程
hThread1 = CreateThread(NULL, 0, Fun1Proc, NULL, 0, NULL);
hThread2 = CreateThread(NULL, 0, Fun2Proc, NULL, 0, NULL);
hThread3 = CreateThread(NULL, 0, Fun3Proc, NULL, 0, NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);
CloseHandle(hThread3);
//创建互斥对象
hMutex = CreateMutex(NULL, TRUE, (LPCWSTR)"count1");
if (hMutex)
{
if (ERROR_ALREADY_EXISTS == GetLastError())
{
return;
}
}
WaitForSingleObject(hMutex, INFINITE);
ReleaseMutex(hMutex);
ReleaseMutex(hMutex);
Sleep(4000);
}
//线程1的入口函数
DWORD WINAPI Fun1Proc(LPVOID lpParameter)//thread data
{
while (true)
{
ReleaseMutex(hMutex);
WaitForSingleObject(hMutex, INFINITE);
if (count1<100)
{
Sleep(1000);
count1+=2;
}
/*else
break;*/
ReleaseMutex(hMutex);
}
return 0;
}
//线程2的入口函数
DWORD WINAPI Fun2Proc(LPVOID lpParameter)//thread data
{
while (true)
{
ReleaseMutex(hMutex);
WaitForSingleObject(hMutex, INFINITE);
if (count1<100)
{
Sleep(2000);
count1 -= 1;
}
/*else
break;*/
ReleaseMutex(hMutex);
}
return 0;
}
//线程3的入口函数
DWORD WINAPI Fun3Proc(LPVOID lpParameter)//thread data
{
while (true)
{
ReleaseMutex(hMutex);
WaitForSingleObject(hMutex, INFINITE);
if (count1==100)
{
exit(0);
}
else if (count1 % 5 == 0)
{
cout << count1<<endl;
}
//break;
ReleaseMutex(hMutex);
}
return 0;
}
0 0
- 线程3:线程同步
- 3线程
- 线程3
- Java线程安全 - 线程(3)
- 线程3:线程间通信
- 线程学习3——前台线程和后台线程
- Java线程-3:线程栈模型与线程的变量
- Linux线程(3): 线程清理处理程序
- Posix线程编程指南(3)--线程同步
- Posix线程编程指南(3) 线程同步
- 操作系统-进程线程--3--线程安全概念
- Java线程总结(3):线程通信
- 非UI线程更改UI线程3
- Java线程(3)--线程间通信
- c/c++线程--3线程池
- iOS基础:线程3-线程安全
- linux线程系列(3)线程创建
- 线程(3)--线程调度之sleep方法
- JQuery入门_选择器
- iOS学习之iOS沙盒(sandbox)机制和文件操作之NSFileManager(三)
- 点击show()和hide()方法显示和隐藏元素,自身也换值
- iOS Quartz 各种绘制图形用法--画图片、写文字、画线、椭圆、矩形、棱形等
- Android开发中这些小技巧你都知道吗?(三)
- 3线程
- Win7设置共享文件夹步骤
- 剑指offer22--栈的压入弹出序列
- POJ 2777
- 打包工具,对质量控制与回溯的重要意义
- SOAP学习
- printf处理long long int 型数据
- spring的定时任务配置【收藏,已留备用】
- cin读取字符直至再次遇到空白符,读取终止