#include <windows.h>
#include <tchar.h>
//#include <strsafe.h>
#define MAX_THREADS 3
#define BUF_SIZE 255
typedef struct MyData {
int val1;
int val2;
} MYDATA, *PMYDATA;
//MyThread函数的声明形式要和ThreadProc方法一致。
DWORD WINAPI MyThread( LPVOID lpParam )
{
HANDLE hStdout;
PMYDATA pData;
TCHAR msgBuf[BUF_SIZE];
size_t cchStringSize;
DWORD dwChars;
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
if( hStdout == INVALID_HANDLE_VALUE )
return 1;
// Cast the parameter to the correct data type.
pData = (PMYDATA)lpParam;//做类型转换,将传递过来的LPVOID类型转换为PMYDATA
// Print the parameter values using thread-safe functions.
return 0;
}
int _tmain()
{
PMYDATA pData;
DWORD dwThreadId[MAX_THREADS];
HANDLE hThread[MAX_THREADS];
int i;
// Create MAX_THREADS worker threads.
for( i=0; i<MAX_THREADS; i++ )
{
// Allocate memory for thread data.
pData = (PMYDATA) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
sizeof(MYDATA));
if( pData == NULL )
ExitProcess(2);
// Generate unique data for each thread.
pData->val1 = i;
pData->val2 = i+100;
hThread[i] = CreateThread(
NULL, // default security attributes
0, // 使用缺省的堆栈大小
MyThread, // 线程入口函数
pData, // 传给线程入口函数的参数
0, // 使用缺省的生成状态
&dwThreadId[i]); // 将线程id存入dwThread[i]中
//检查返回值,判断是否生成线程成功。
//失败的话,关闭所有已生成的线程,并释放进程的资源
if (hThread[i] == NULL)
{
for(i=0; i<MAX_THREADS; i++)
{
if (hThread[i] != NULL)
{
CloseHandle(hThread[i]);//关闭hThread[i]指向的线程
}
}
HeapFree(GetProcessHeap(), 0, pData);//释放为进程分配的堆栈
ExitProcess(i);//释放进程
}
}
// Wait until all threads have terminated.
WaitForMultipleObjects(MAX_THREADS, hThread, TRUE, INFINITE);//等待hThread中所有线程结束,第三个参数为TRUE时表明等待所有
// Close all thread handles and free memory allocation.
for(i=0; i<MAX_THREADS; i++)
{
CloseHandle(hThread[i]);//关闭线程
}
HeapFree(GetProcessHeap(), 0, pData);
return 0;
}
使用MFC相关的功能函数来模拟经典进程互斥和同步问题
3星 · 超过75%的资源 需积分: 9 37 浏览量
2011-11-21
11:10:20
上传
评论 2
收藏 1KB RAR 举报
cytherean427
- 粉丝: 0
- 资源: 1
最新资源
- 基于Matlab人脸肤色定理的教师人数统计+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab霍夫曼变换的表盘读数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab火灾烟雾检测源码带GUI界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的恶劣天气交通标志识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的霍夫曼变换的表盘示数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的车道线识别系统 +源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB 的霍夫曼变换答题卡识别源码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab+bp神经网络的神经网络汉字识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈