判断是否在同一个线程-GetCurrentThreadId()用法

本文介绍了如何在Windows上通过GetCurrentThreadId()判断线程是否在同一线程中,强调线程ID可能存在重复的情况及原因。此外,讨论了多线程调试的挑战,如断点和单步执行的影响,推荐使用日志输出作为替代方案,并提醒注意日志函数的轻量化设计。同时,提到了Debug和Release版本可能导致的多线程问题及其解决建议。
摘要由CSDN通过智能技术生成

线程

在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应。
判断是否在同一个线程中的根本方法也比较简单,在Windows上直接用 GetCurrentThreadId() 比较;
GetCurrentThreadId() 会直接输出线程id。

注意:

1.线程id是动态分配的,因此如果某一个线程结束以后,这个id号还可能会分配给另一个线程,所以会有重复。
2.之所以会出现相同ID的情况,可能是以下原因:先前的线程已经被销毁了;采用的是异步机制;消息机制;线程运行得太短时间了,还没有等其它线程启动就已经运行完了。
3.直接输出了GetCurrentThreadID的返回值可能会出现重复的现象,
这个返回值不能直接输出的,该函数采用的是寄存器返回,很快会被其他操作覆盖!
正确的做法是:
将GetCurrentThreadID的返回值赋值给一个临时变量;而后输出该临时变量
以前自己将GetCurrentThreadID的值作为map的key,也出了问题,改用临时变量就解决了。
4.打印出id的那句是:

TRACE(
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值