请问WaitForMultipleObjects函数的用法和意思?
请详细说明.
请详细说明.
解决方案 »
- 如何调用ocx
- win32向导写DLL,VB里怎么不能调用呀?
- OpenGL辅助库aux问题
- ++寻求红外图像处理领域的朋友++
- 大家帮忙看看这个问题
- odbc 执行存储过程 高分数高难度
- 请教,我在CTATIC控件绘制自己的绘图控件,请问如何将控件的大小传给控件类的成员函数,谢谢,在线等待
- 如何在组件中使用计时器?
- post提交用户名密码登录某网站,成功返回cookie数据包,但是出现如下的问题,不知怎么解决
- 【新手求助】请问已知一个灰度图的灰度矩阵,怎么在单文档MFC中显示?
- 请问在CFormView派生类里面加的控件进行初始话除了在OnInitialUpdate()函数中,还有别的方法吗??
- 怎么定义?
使用:
以下代码,它展示了通过使用多线程函数或者多次调用一个单线程函数,可以创建多个的后台线程。#include
#include
#include typedef struct
{
DWORD frequency;
DWORD duration;
DWORD iterations;
} honkParams;void HonkThread(honkParams *params)
{
DWORD i;for (i=0; i < params->iterations; i++)
{
Beep(params->frequency, params->duration);
Sleep(1000);
}GlobalFree(params);
}void main(void)
{
HANDLE honkHandles[3];
DWORD threadID;
honkParams *params;
DWORD count;
CHAR freqStr[100];
CHAR durStr[100];
CHAR iterStr[100];for (count=0; count < 3; count++)
{
// allocate memory for a "params" structure
params=(honkParams *) GlobalAlloc(GPTR,
sizeof(honkParams));cout << "Enter the beep frequency: ";
cin.getline(freqStr, 100);
params->frequency=atoi(freqStr);cout << "Enter the beep duration: ";
cin.getline(durStr, 100);
params->duration=atoi(durStr);cout << "Enter the number of beeps: ";
cin.getline(iterStr, 100);
params->iterations=atoi(iterStr);// create a thread and pass it the pointer
// to its "params" struct
honkHandles[count]=CreateThread(0, 0,
(LPTHREAD_START_ROUTINE) HonkThread,
params, 0, &threadID);
}// wait for all threads to finish execution
WaitForMultipleObjects(3, honkHandles,
TRUE, INFINITE);
}
在运行以上代码时,该程序将会要求你输入一个频率、持续时间和发出响声的次数。你可以做三次这样的处理,如果你为每个线程设置足够高的发声次数的话,你将可以听到三个线程同时发出嘟嘟的响声。