- 注册时间
 - 2021-4-16
 
- 最后登录
 - 2024-9-9
 
- 在线时间
 - 3 小时
 
 
 
 
 
编程入门 
  
	- 龙马币
 - 40 
 
 
 
 
 | 
 
- // 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;
 
 - }
 
  复制代码 
 
 |   
 
 
 
 |