21xrx.com
2024-12-22 18:15:13 Sunday
登录
文章检索 我的文章 写文章
C++创建线程并传输数据
2023-07-11 01:51:03 深夜i     --     --
C++ 线程 数据传输

C++是一门流行的编程语言,而线程是它的重要部分之一。线程在C++中可以用于同时执行多个任务,从而提高程序的效率和处理多任务的能力。本文将介绍如何使用C++创建线程并传输数据。

在C++中创建线程的基本方法是使用头文件“thread”,该头文件中定义了可以将函数或类成员函数作为线程执行的函数。以下是一个简单的示例:


#include <iostream>

#include <thread>

using namespace std;

void threadFunction(int n)

{

  cout << "Thread function running. Thread ID=" << this_thread::get_id() << endl;

  cout << "Passed value = " << n << endl;

}

int main()

{

  cout << "Main thread ID=" << this_thread::get_id() << endl;

  int value = 5;

  thread t(threadFunction, value);

  t.join();

  cout << "Main thread ended." << endl;

  return 0;

}

在上述示例中,我们定义了一个函数“threadFunction”作为线程来执行。该函数将一个整数作为参数,并打印线程ID以及传递的整数值。在主函数中,我们定义了整数值“value”为5,并创建了一个线程“t”,将函数“threadFunction”作为参数传递,并传递整数值“value”作为函数的参数。我们使用“join()”函数来阻止主线程结束,直到线程“t”完成执行。

此时,我们可以执行程序,输出结果如下:


Main thread ID=140166855128768

Thread function running. Thread ID=140166846736640

Passed value = 5

Main thread ended.

从输出可以看出,主线程ID为“140166855128768”,而子线程ID为“140166846736640”。并且传递的整数值为“5”。

除了传递整数值,我们还可以通过指针或引用来传递更复杂的数据类型。以下是另一个示例:


#include <iostream>

#include <thread>

using namespace std;

struct Data

  int value1;

  int value2;

;

void threadFunction(Data& data)

{

  cout << "Thread function running. Thread ID=" << this_thread::get_id() << endl;

  cout << "Passed values:" << endl;

  cout << "value1 = " << data.value1 << endl;

  cout << "value2 = " << data.value2 << endl;

}

int main()

{

  cout << "Main thread ID=" << this_thread::get_id() << endl;

  Data data = 10;

  thread t(threadFunction, std::ref(data));

  t.join();

  cout << "Main thread ended." << endl;

  return 0;

}

在本示例中,我们定义了一个结构体“Data”,包含两个整数值。我们将该结构体作为线程函数的参数,并将其传递给线程。在线程函数中,我们输出了传递的两个整数值。在主函数中,我们创建了一个“Data”结构体对象,并将其传递给线程函数。

在执行程序后,输出应为:


Main thread ID=140555198914240

Thread function running. Thread ID=140555194089728

Passed values:

value1 = 10

value2 = 20

Main thread ended.

从输出中可以看出,我们成功地将一个结构体作为参数传递给了线程函数,并成功访问了结构体中的两个整数值。

总结:

本文介绍了如何使用C++创建线程并传输数据。在C++中,我们可以使用“thread”头文件来定义线程,并使用函数指针、类成员函数、引用或指针等方式将数据传递给线程。通过了解线程的基础知识,我们可以更好地利用它们来同时执行多个任务,提高程序的效率和性能。

  
  

评论区

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