手机
当前位置:查字典教程网 >编程开发 >C语言 >C++采用TLS线程局部存储的用法实例
C++采用TLS线程局部存储的用法实例
摘要:本文实例讲述了C++采用TLS线程局部存储的用法。分享给大家供大家参考。具体方法如下:复制代码代码如下://useTLS.cpp:定义控制台...

本文实例讲述了C++采用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:%dn",::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++程序设计有所帮助。

【C++采用TLS线程局部存储的用法实例】相关文章:

C++Primer笔记之关联容器的使用详解

C++实现:螺旋矩阵的实例代码

C++可变参数的实现方法

C++指向类成员函数的指针详细解析

C++生成dll和调用dll的方法实例

C/C++实现矩阵的转置(示例代码)

C++ 字符串的反转五种方法实例

C++中的异或运算符^的使用方法

c++中string类成员函数c_str()的用法

8皇后问题的解法实例代码

精品推荐
分类导航