21xrx.com
2024-05-20 01:54:05 Monday
登录
文章检索 我的文章 写文章
C++多线程创建的几种方法
2023-07-13 19:54:14 深夜i     --     --
C++ 多线程 创建 方法 方式

在C++中使用多线程可以提高程序的性能和效率,因为它允许程序同时执行多个任务。多线程主要是通过创建线程实现的,下面介绍C++中使用多线程的几种方法。

1.使用std::thread类

std::thread是C++语言中提供的一个标准线程类,可以使用它来创建和管理线程。使用std::thread创建线程的基本语法如下:


#include <thread>

#include <iostream>

void thread_function()

  std::cout << "hello from thread" << std::endl;

int main()

{

  std::thread t(thread_function);

  t.join();

  return 0;

}

在上面的代码中,我们定义了一个名为thread_function的函数,然后使用std::thread创建一个名为t的线程,并将thread_function作为线程函数。最后我们调用t.join()使得主线程等待子线程执行完毕。当程序运行时,将会输出hello from thread。

2.使用lambda表达式创建线程

除了传递函数指针或函数对象之外,我们也可以使用lambda表达式来定义线程函数。这种方法可以更加简洁,具体语法如下:


#include <thread>

#include <iostream>

int main()

{

  std::thread t([]()

    std::cout << "hello from thread" << std::endl;

  );

  t.join();

  return 0;

}

上面的代码中我们使用了一个lambda表达式,其作为一个匿名函数被传递给了std::thread类。lambda表达式包含在一组花括号中,并跟随这一个空的参数列表,其中定义了线程函数。

3.使用函数对象创建线程

除了传递函数指针或lambda表达式之外,我们也可以使用函数对象。函数对象是一个类对象,其中包含了重载运算符()的成员函数。使用函数对象创建线程的基本语法如下:


#include <thread>

#include <iostream>

class my_class {

public:

  void operator()() const

    std::cout << "hello from thread" << std::endl;

  

};

int main() {

  my_class my_object;

  std::thread t(my_object);

  t.join();

  return 0;

}

上面的代码中我们定义了一个名为my_class的类,其中包含operator()函数重载。我们将对象my_object传递给std::thread构造函数,并使用t.join()防止主线程退出。

C++中的多线程是非常有用的工具,可以提高程序的性能和效率。以上是C++中使用多线程的三种基本方法:使用std::thread类、lambda表达式和函数对象。开发者们可以根据实际需求来选择适合的方式来创建多线程,以满足程序的要求。

  
  

评论区

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