我一直在尝试通过Windows API了解线程.我跑过__declspec( thread )
从MSDN,但我不明白的区别是什么,和之间CreateThread()
.
听起来你只在对象上创建线程?这是否意味着如果我while(1);
通过该对象编写了一个在我的主类中执行并运行该方法的方法,那么它会在一个单独的线程中执行吗?我想我的问题是__declspec ( thread )
用于什么,我应该用它CreateThread
吗?
对不起,如果我的问题令人困惑.
他们之间的差异是巨大的:
__declspec( thread )
是一个存储修饰符,指定声明的变量具有本地存储.这意味着每个线程拥有自己的此值副本.是globals的线程版本.
C++ 11引入了名称的线程存储修饰符thread_local
.它是一个存储修饰符,就像static
.
CreateThread()
是一个函数,它将创建一个新线程并开始运行您指定的某个函数.
C++ 11还引入了一个完整的线程API,您可以使用它来编写可在(几乎)任何平台上运行的线程感知代码.你可以搜索std::thread
和std::async
...
所以基本上它们是两个完全不同的东西,用于完全不同的目的.如果要使用Windows API创建新线程,请使用CreateThread
.如果您希望变量thread_local
使用Windows API存储,则使用__declspec( thread )
.如果您可以使用C++ 11,那么您应该忘记Windows API的细微之处并使用标准API.
归档时间: |
|
查看次数: |
839 次 |
最近记录: |