std :: this_thread :: get_id()vs传递ID

时间:2016-02-26 03:10:42

标签: c++ c++11

这两个代码有什么区别? 什么是最好/最快的方式。 试图创建我自己的WM_TIMER线程。

1st:timerThreadProc

使用get_id()

_name= "daily_transaction"

第二名:timerThreadProc

没有get_id()

_name= "daily.transaction"

1 个答案:

答案 0 :(得分:2)

第一个示例使用C ++库中的工具来确定当前运行的线程是hTimer1Thread的线程还是hTimer2Thread的线程。

第二个例子通过将其参数与预定义常量进行比较来执行可比较的任务,这些常量可能指的是相同的两个线程。

这就像你总结的那样;但是,这里未提及的是,第二种方法还必须在显示的代码之外需要一些额外的支持,以跟踪执行线程所代表的内容,并将其映射到两者之一预定义常量。您必须根据显示的实现来假定这一点。

所以,真的不可能在这里确定最好的/最快的"方式。

什么"最快"在很大程度上取决于C ++库实现的内部细节。例如,get_id()this_thread或某个任意线程是否内联,以及它的效率如何。然而,与第二个例子中使用的附加带外方法相比,效率更高。

什么"最好"还取决于应用程序的其余部分。根据应用程序的要求和行为的详细信息,第一种方法可能会稍微好一些。第二种方法也可能稍好一些。

但是,更可能的是,鉴于现代的,快速的CPU和现代的,智能的,优化的编译器,它不会产生任何可衡量的差异,而这仅仅归功于整体代码的风格和可维护性

这意味着您自己将成为回答此问题的最佳人选,因为您对stackoverflow.com上的任何其他人了解此特定应用程序的更多信息