时间:2021-05-20
本文实例讲述了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:%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++程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C++使用CriticalSection实现线程同步的方法,在前文C++线程同步实例分析的基础上增加了四行代码,使用了四个函数:EnterCrit
C++中构造函数的实例详解c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++
本文实例讲述了C++采用openfilename打开文件对话框用法,分享给大家供大家参考。具体方法如下:这里需要注意,有的时候会因为没设置nMaxFile,而一
linux下的C\C++多进程多线程编程实例详解1、多进程编程#include#include#includeintmain(){pid_tchild_pid;
本文实例讲述了C++开启线程CreatThread函数的使用,实现主线程与工作线程交互的功能。分享给大家供大家参考。具体实现代码如下:复制代码代码如下://线程