首页 理论教育 C++STL线程成员函数

C++STL线程成员函数

时间:2023-10-25 理论教育 版权反馈
【摘要】:若线程不能运行,则将函数参数代表线程的状态赋值给本线程,并将函数参数的状态恢复至默认构造状态。该成员函数用于判断线程是否可执行。当之前this代表的线程终止执行时,程序将释放任何自身资源。正常情况下,该函数返回硬件线程数目,但有时返回的数值并不代表线程数目,无确定意义。

C++STL线程成员函数

1.构造器函数

线程构造器函数有两种形式:thread()和thread(thread&&x)。

如果新线程启动失败,程序会抛出异常:system_error。

当系统缺乏必需的资源而不能创建新线程,或者进程中限制了线程的数量时,系统会提示:资源无效,请重试。

第二种形式的构造函数用于构造一个线程,并将该线程设置为默认状态。

2.线程析构器函数

析构函数为:~thread()。

析构函数的功能:如果线程是可加入进程的,那么调用该函数即会终止线程。否则,设置线程的状态至默认构造状态。

3.成员函数operator=(thread&& x)

该成员函数的功能:若线程可加入进程并运行,则调用函数terminate()。若线程不能运行,则将函数参数代表线程的状态赋值给本线程,并将函数参数的状态恢复至默认构造状态。

4.其他成员函数

1)void swap(thread& x)。该成员函数用于交换本线程和线程x的状态。(www.xing528.com)

2)bool joinable()。该成员函数用于判断线程是否可执行。

3)void join()。该函数可执行的前提条件是joinable()返回true。该成员函数用于将线程加入进程的执行,直至线程结束才继续执行程序。一旦发出异常,会抛出system_error类型的异常,通常会发生以下3种错误

•resource_deadlock_would_occour:线程发生死锁。

•no_such_process:线程是无效线程。

•invalid_argument:线程无法执行。

4)void detach()。该函数可执行的前提条件是:joinable()返回true。该函数的功能是:线程启动后,若执行detach(),则不等待线程返回,继续执行程序。如果被调用的线程没有发生阻塞,线程将继续执行。一旦函数detach()返回,指针this不再代表可能继续执行的线程。当之前this代表的线程终止执行时,程序将释放任何自身资源。同样,一旦发生异常,会抛出system_error类型的异常。函数执行时通常发生的错误如下:

•no_such_process:代表线程无效。

•invalid_argument:线程不可执行,不能加入进程。

5)id get_id()const noexcept。如果this不代表某线程,该函数返回默认构造的id类型对象;否则,该函数返回this - >::get_id()。

除了上述函数,线程类还包含一个静态成员:unsigned hardware_concurrency()。

正常情况下,该函数返回硬件线程数目,但有时返回的数值并不代表线程数目,无确定意义。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈