21xrx.com
2024-12-22 20:43:50 Sunday
登录
文章检索 我的文章 写文章
C++线程的参数发生变化
2023-07-05 03:16:13 深夜i     --     --
C++ 线程 参数 变化

近日,C++线程的参数发生了一些变化,引起了广泛的关注和讨论。这一变化主要涉及到线程对象的构造函数和joinable()函数。

据悉,C++11标准中,线程对象的构造函数是这样的:


template< class Function, class... Args >

explicit thread( Function&& f, Args&&... args );

也就是说,在创建线程对象时,需要传入一个函数(或函数对象)以及该函数的参数。但是,许多开发者在使用线程对象时,并不需要传递参数,而是直接调用默认构造函数即可。因此,C++17标准对线程对象的构造函数进行了改进,新增了一个无参构造函数:


thread() noexcept;

这个构造函数将创建一个空的线程对象,没有关联任何函数。开发者可以在之后通过assign()函数或者直接赋值运算符来给线程对象赋值。

另一个引起变化的地方是joinable()函数。在C++11标准中,joinable()函数用来判断线程对象是否可被join。在某些情况下,如果线程对象没有和任何函数相关联,joinable()函数会抛出异常。因此,C++17标准规定,对于一个空的线程对象,joinable()函数应返回false,而不是抛出异常。

这些变化在C++标准中的意义,不仅仅是为了提高代码的安全性和可读性,同时也方便了开发者的使用。在开发过程中,开发者可以根据实际情况选择调用哪个构造函数,而不需要强制传入参数。并且,在使用joinable()函数时,也不需要考虑线程对象是否已经和某个函数相关联。

总之,C++线程的参数发生了变化,这也再次证明了C++标准的不断迭代和更新,以更好地适应开发者的需求和变化。开发者也应该紧跟C++标准的步伐,不断学习和研究最新的特性和技术,提高自己的编程水平。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复