VC中Sleep函数 vc6 sleep
函数原形:
VOID Sleep(DWORD dwMilliseconds );
参数:
dwMilliseconds
[输入]指定一个时间间隔,单位毫秒,用于挂起线程的时间。
0值引起线程放弃余下的时间给其他同等优先级别准备运行的线程,如果没有相等优先级的线程运行,函数立即返回线程继续运行。
值 INFINITE无限制挂起线程。
返回值:
没有返回值。
备注:
这个函数引起一个线程放弃剩余时间并且停止运行直到指定的时间间隔后线程准备运行。特殊点,如果你指定零秒,线程将放弃剩余的时间段继续等待,要注意准备的其他线程并不保证立即执行,因此,线程可能不运行直到到达指定的时间间隔,更多的参考信息,察看计划优先级。
使用函数时必须要小心直接或间接的创建窗体。如果线程创建任意窗体,则必须处理消息。消息广播发送给所有系统中的窗体。如果有一个线程调用Sleep无限制等待,系统将死锁。 DDE 和 COM CoInitialize 是间接创建窗体的两个例子。 因此, 有线程创建窗体,使用MsgWaitForMultipleObjects 函数或者MsgWaitForMultipleObjectsEx函数,这两个函数更适合。
需求:
Windows NT/2000/XP: 包括WindowsNT 3.1 和以后版本。
Windows 95/98/Me: 包括Windows 95和以后版本。
头文件: 定义在 Winbase.h; 包含于Windows.h.
连接库: 使用 Kernel32.lib.
示例代码:
#include<stdio.h>
#include<windows.h>
#define THREADCOUNT4
DWORDdwTlsIndex;
VOIDErrorExit(LPTSTR);
VOIDCommonFunc(VOID)
{
LPVOIDlpvData;
// Retrieve a data pointer for the currentthread.
lpvData =TlsGetValue(dwTlsIndex);
if ((lpvData == 0)&& (GetLastError() !=0))
ErrorExit("TlsGetValueerror");
// Use the data stored for the currentthread.
printf("common: thread %d:lpvData=%lxn",
GetCurrentThreadId(),lpvData);
Sleep(5000);
}
DWORD WINAPIThreadFunc(VOID)
{
LPVOIDlpvData;
// Initialize the TLS index for thisthread.
lpvData = (LPVOID)LocalAlloc(LPTR,256);
if (! TlsSetValue(dwTlsIndex,lpvData))
ErrorExit("TlsSetValueerror");
printf("thread %d:lpvData=%lxn", GetCurrentThreadId(),lpvData);
CommonFunc();
// Release the dynamic memory before the threadreturns.
lpvData =TlsGetValue(dwTlsIndex);
if (lpvData !=0)
LocalFree((HLOCAL)lpvData);
return0;
}
DWORDmain(VOID)
{
DWORDIDThread;
HANDLEhThread[THREADCOUNT];
inti;
// Allocate a TLSindex.
if ((dwTlsIndex = TlsAlloc())== -1)
ErrorExit("TlsAllocfailed");
// Create multiplethreads.
for (i = 0; i <THREADCOUNT;i++)
{
hThread[i] = CreateThread(NULL, // no securityattributes
0,// use default stacksize
(LPTHREAD_START_ROUTINE) ThreadFunc, // threadfunction
NULL,// no thread functionargument
0,// use default creationflags
&IDThread);// returns threadidentifier
// Check the return value forsuccess.
if (hThread[i] ==NULL)
ErrorExit("CreateThreaderrorn");
}
for (i = 0; i <THREADCOUNT;i++)
WaitForSingleObject(hThread[i],INFINITE);
return0;
}
VOID ErrorExit (LPTSTRlpszMessage)
{
fprintf(stderr, "%sn",lpszMessage);
ExitProcess(0);
}
更多阅读
VBA编程中MsgBox函数怎么用 vba msgbox
VBA编程中MsgBox函数怎么用——简介Excel编程中的MsgBox函数用于输出一个对话框,该函数在编程调试以及输出结果方面具有极为重要的意义。下面小编就为大家讲解一下该函数的具体使用方法。VBA编程中MsgBox函数怎么用——方法/步骤
excel中round函数的使用方法 isodd函数的使用方法
excel中round函数的使用方法——简介不少朋友都会问在excel中round函数怎么用,作为使用频率较高函数之一,本文就介绍一下round函数的使用方法。excel中round函数的使用方法——工具/原料office excelexcel中round函数的使用方法——
Excel中COLUMN函数的使用 excel函数的使用方法
Excel中COLUMN函数的使用——简介COLUMN函数是一个简单的辅助函数,在一些复杂的函数计算中会使用到COLUMN函数,但是一般都不会对COLUMN函数作解析,很多朋友对公式函数中突然插入“=COLUMN()”表示理解。这里,为大家介绍COLUMN函数的使用。
Excel中Frequency函数的使用 excel frequency函数
Excel电子表格作为办公自动化中重要的一款软件,其强大的数据处理功能中很大一部分取决于函数的使用。本文就函数Frequency的使用做以简单介绍。以一列垂直数组返回某个区域中数据的频率分布。例如,使用函数FREQUENCY 可以计算公司员工
matlab中subplot函数在画图中的应用 matlab中subplot函数
matlab 中subplot函数在画图中的应用如下:subplot(3,2,1)plot(x)title('默认格式')subplot(3,2,2)plot(x)set(gca,'xtick',[1 3 6 8]);set(gca,'ytick',[]);title('X自定义间隔,Y关闭')subplot(3,2,3)plot(x)