C++采用TLS线程局部存储的用法实例
本文实例讲述了C++采用TLS线程局部存储的用法。分享给大家供大家参考。
具体方法如下:
//useTLS.cpp:定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include<Windows.h>
#include<process.h>
//声明
VOIDInitStartTime();
DWORDGetUserTime();
//TLS索引,作全局变量
DWORD g_dwTlsIndex;
VOIDInitStartTime()
{
DWORDdwStartTime=GetTickCount();
::TlsSetValue(g_dwTlsIndex,(LPVOID)dwStartTime);
}
DWORDGetUserTime()
{
DWORDdwNowTime=GetTickCount();
DWORDdwStartTime=(DWORD)::TlsGetValue(g_dwTlsIndex);
returndwNowTime-dwStartTime;
}
UINTWINAPIThreadProc(LPVOIDlpParameter)
{
//模拟线程的工作过程
DWORDi=1000*1000*100;
while(i--)
{
}
printf("ThreadID:%-5d,UseTime:%d\n",::GetCurrentThreadId(),GetUserTime());
return0;
}
int_tmain(intargc,_TCHAR*argv[])
{
HANDLEhThread[10];
//得到TLS索引
g_dwTlsIndex=::TlsAlloc();
//开启十个线程,计算每个线程运行的时间
for(inti=0;i<10;i++)
{
hThread[i]=(HANDLE)_beginthreadex(NULL,0,ThreadProc,NULL,0,NULL);
}
//等待工作线程
::WaitForMultipleObjects(10,hThread,TRUE,INFINITE);
for(inti=0;i<10;i++)
{
//::WaitForSingleObject(hThread[i],INFINITE);
::CloseHandle(hThread[i]);
}
//释放TLS
::TlsFree(g_dwTlsIndex);
return0;
}
希望本文所述对大家的C++程序设计有所帮助。
热门推荐
10 儿子立冬祝福语简短独特
11 对当兵的祝福语简短
12 侄儿高考试祝福语简短
13 伴郎红包祝福语朋友简短
14 媳妇生日简短祝福语朋友
15 公司年会祝福语简短最好
16 元旦感恩祝福语简短大全
17 红包祝福语简短10字
18 周六早晨祝福语简短