源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C++采用TLS线程局部存储的用法实例

  • 时间:2021-06-11 14:18 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C++采用TLS线程局部存储的用法实例
本文实例讲述了C++采用TLS线程局部存储的用法。分享给大家供大家参考。 具体方法如下:
[u]复制代码[/u] 代码如下:
// 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;  }
希望本文所述对大家的C++程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部