行业知识
线程的使用
���录
()1,创建线程的几种方式
2,示例
()3,线程常用方法
3.1 std::thread类
3.1.1 成员变量
3.1.2 thread成员函数
3.1.2.1 thread 构造函数
3.1.2.2 thread 析构函数
3.1.2.3 get_id 获取线程id
3.1.2.4 joinable
3.1.2.5 join 加入
3.1.2.6 detach 分离
3.1.2.7 swap 交换线程
3.1.2.8 join用法示例
3.1.2.9 detach()用法示例
3.2 std::this_thread命名空间
3.2.1 this_thread命名空间的函数介绍
3.3 pthread函数 (C++98)
3.3.1 pthread_create 线程创建
3.3.2 pthread_join线程挂起
3.3.3 pthread_exit线程退出
3.3.4 pthread_self获取当前线程id
3.3.5 代码示例
1,创建线程的几种方式
a> 通过函数指针创建线程
b> 通过函数对象创建线程
c> 通过lambda函数创建线程
使用std::thread类创建对象,必须包含头文件
#include
创建的形式是
std::thread thobj()
新线程将在创建新对象后立即启动,并将与启动该线程的线程并行执行传递的回调。而且,任何线程都可以通过在该线程的对象上调用join()函数来等待另一个线程退出。
2,示例
std::this_thread::sleep_for 函数是休眠函数,表示当前线程休眠一段时间,休眠期间不与其他线程竞争CPU
std::chrono::seconds 是 std::chrono 库中的一个持续时间类
std::cref、std::ref 和 std::reference_wrapper
在 C++ 编程中,有时候我们需要在不进行拷贝的情况下传递引用,或者在需要引用的地方使用常量对象。为了解决这些问题,C++ 标准库提供了三个有用的工具:std::cref、std::ref 和 std::reference_wrapper。
std::cref 是一个模板函数,用于创建对常量对象的引用。它返回一个 std::reference_wrapper 对象,可以在需要引用的地方使用。这在函数参数传递中特别有用,因为它允许我们在不进行拷贝的情况下传递常量对象,同时保持引用的语义。
std::ref 是一个模板函数,用于创建对可修改对象的引用。它返回一个 std::reference_wrapper 对象,允许我们在需要引用的地方使用,同时允许修改被引用的对象。
std::reference_wrapper 是一个模板类,用于包装引用,使其能够在容器中存储或以引用的形式传递。它提供类似引用的语法,并且可以与标准容器一起使用,因为容器无法直接存储引用。
#include #include #include using namespace std;class Thread_Test{public:void operator()(){for (int i = 0; i
上一篇:国际服在哪里选择服务器?