TLS线程局部存储的使用

来源:互联网 发布:2017淘宝商品类目大全 编辑:程序博客网 时间:2024/05/16 17:34


TLS线程局部存储的使用

// useTLS.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Windows.h>#include <process.h>//声明VOID InitStartTime();DWORD GetUserTime();//TLS索引,作全局变量 DWORD  g_dwTlsIndex;VOID InitStartTime(){DWORD dwStartTime = GetTickCount();::TlsSetValue(g_dwTlsIndex,(LPVOID)dwStartTime);}DWORD GetUserTime(){DWORD dwNowTime = GetTickCount();DWORD dwStartTime = (DWORD)::TlsGetValue(g_dwTlsIndex);return dwNowTime - dwStartTime;}UINT WINAPI ThreadProc(LPVOID lpParameter){//模拟线程的工作过程DWORD i = 1000 * 1000 *100;while (i--){}printf("Thread ID:%-5d,Use Time:%d\n",::GetCurrentThreadId(), GetUserTime());return 0;}int _tmain(int argc, _TCHAR* argv[]){HANDLE hThread[10];//得到TLS索引g_dwTlsIndex = ::TlsAlloc();//开启十个线程,计算每个线程运行的时间for (int i=0;i<10;i++){hThread[i] = (HANDLE)_beginthreadex(NULL, 0, ThreadProc, NULL, 0, NULL);}//等待工作线程::WaitForMultipleObjects(10, hThread, TRUE, INFINITE);for (int i=0;i<10;i++){//::WaitForSingleObject(hThread[i], INFINITE);::CloseHandle(hThread[i]);}//释放TLS::TlsFree(g_dwTlsIndex);return 0;}


原创粉丝点击