21xrx.com
2025-03-29 21:07:39 Saturday
文章检索 我的文章 写文章
C++中三种开启线程的方法
2023-06-27 22:08:35 深夜i     --     --
C++ 线程 开启 方法 多线程

在C++中,线程是一种常见的并发编程方法,它可以允许程序同时执行多个任务,提高程序的效率和性能。为了实现线程并发编程,需要使用一些开启线程的方法来创建和启动线程。下面将介绍C++中三种开启线程的方法。

1、使用函数指针创建线程

这种方法是最基本的创建线程方式,它的主要原理是使用一个函数指针作为新线程的入口,调用操作系统提供的创建线程API来创建新线程,并传递函数指针作为线程的入口。

示例代码如下:

#include <iostream>
#include <thread>
using namespace std;
void myThread()
{
  for(int i = 0; i < 10; i++)
  
    cout << "Thread running" << endl;
  
}
int main()
{
  thread t(myThread); // 创建线程并传入函数指针
  t.join();
  return 0;
}

2、使用Lambda表达式创建线程

Lambda表达式是C++11的一种新特性,它可以方便地定义一个匿名函数,并使用该函数创建线程。使用Lambda表达式创建线程更加便捷和灵活,可以在创建线程时直接编写线程执行的函数。

示例代码如下:


#include <iostream>

#include <thread>

using namespace std;

int main()

{

  thread t([](){  // 使用Lambda表达式创建线程

    for(int i = 0; i < 10; i++)

    

      cout << "Thread running" << endl;

    

  });

  t.join();

  return 0;

}

3、使用类成员函数创建线程

在C++中,将类的成员函数作为线程执行的函数也是一种常见的开启线程的方法。但是,由于类的成员函数需要使用类的对象进行调用,因此需要使用std::bind()函数将类的对象和成员函数绑定在一起,然后传递给线程API。

示例代码如下:


#include <iostream>

#include <thread>

#include <functional>

using namespace std;

class MyClass

{

public:

  void myThread()

  {

    for(int i = 0; i < 10; i++)

    

      cout << "Thread running" << endl;

    

  }

};

int main()

{

  MyClass myObj;

  thread t(std::bind(&MyClass::myThread, &myObj)); // 使用类成员函数创建线程

  t.join();

  return 0;

}

综合来说,以上三种方法都可以用来开启线程,每种方法都有其自身的优缺点和适用场景,在实际应用中可以根据需要选择合适的方法。

  
  
下一篇: C++库函数简介

评论区