#include <windows.h>
#include <process.h>
#include <stdio.h>
//利用TLS跟踪线程的运行时间
DWORD g_tlsUsedTime;
void InitStartTime();
DWORD GetUsedTime();
UINT __stdcall ThreadFunc(LPVOID)
{
int i;
//初始化开始时间
InitStartTime();
//模拟长时间工作
i = 10000*1000;
while(i--)
{}
//打印本线程运行的时间
printf ("This thread is coming to end.Thread ID : %-5d,Used Time: %d\n",
::GetCurrentThreadId(),GetUsedTime());
return 0;
}
int main(int argc,char* argv[])
{
UINT uId;
int i;
HANDLE h[10];
//通过在进程位数组申请一个索引,初始化线程运行时间记录系统
g_tlsUsedTime = ::TlsAlloc();
//令十个线程同时运行,并等待它们各自的输出结果
for(i=0;i < 10;i ++)
{
h[i] = (HANDLE)::_beginthreadex(NULL,0,ThreadFunc,NULL,0,&uId);
}
for( i=0 ; i<10;i ++)
{
::WaitForSingleObject(h[i],INFINITE);
::CloseHandle(h[i]);
}
//通过释放线程局部存储索引,释放时间记录系统占有的资源
::TlsFree(g_tlsUsedTime);
return 0;
}
//初始化线程的开始时间
void InitStartTime()
{
//获得当前的时间,将线程的创建时间与线程对象相关联
DWORD dwStart = ::GetTickCount();
::TlsSetValue(g_tlsUsedTime,(LPVOID)dwStart);
}
//获得一个线程的已经运行的时间
DWORD GetUsedTime()
{
//获得当前时间,返回当前时间和线程创建时间的差距
DWORD dwElapsed = ::GetTickCount();
dwElapsed = dwElapsed -(DWORD)::TlsGetValue(g_tlsUsedTime);
return dwElapsed;
}
没有合适的资源?快使用搜索试试~ 我知道了~
线程同步源代码(使用VC++6.0编译)

共88个文件
pdb:14个
plg:7个
cpp:7个

需积分: 10 19 下载量 49 浏览量
2010-04-05
21:53:54
上传
评论
收藏 4.42MB RAR 举报
温馨提示
线程同步源代码线程同步源代码线程同步源代码线程同步源代码线程同步源代码线程同步源代码线程同步源代码
资源推荐
资源详情
资源评论

















收起资源包目录








































































































共 88 条
- 1
资源评论


独酌逸醉
- 粉丝: 59
- 资源: 8
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 数据结构课程设计,地铁公交换乘系统(demo),使用Qt QML.zip
- 数据库系统大作业:手机零售系统,技术栈:C++,Qt,SQL Server存储过程、触发器.zip
- 最后一个版本,经测试可用 md5: 26569c63bf1ab7165655a58a8b964426
- api-ms-win-shcore-scaling-l1-1-1.wim
- python MK突变分析代码,更改文件路径就可以使用
- SOP8888888888888
- Burning Shader 1.3.3
- ._ID3决策树算法实验
- DeepVoice AI - Text To Voice v2.1.3
- ACE 2005,LDC2006T06数据集下载
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
