C++中启动线程的方法有多种,最常用的有以下两种:
1. 使用C++11标准提供的std::thread
C++11标准提供了std::thread类,可以用来启动一个新线程。使用std::thread的步骤如下:
步骤1:定义一个可执行的函数
void threadFunction()
{
// 在这里编写所需要执行的线程代码
}
步骤2:创建一个std::thread对象,并传入可执行函数
#include <thread>
std::thread myThread(threadFunction);
步骤3:等待线程执行结束
myThread.join(); // 等待线程执行完毕
完整的示例代码如下:
#include <iostream>
#include <thread>
void threadFunction()
{
for(int i = 0; i < 5; i++)
{
std::cout << "Thread ID: " << std::this_thread::get_id() << " , i = " << i << std::endl;
}
}
int main()
{
std::thread myThread(threadFunction);
myThread.join(); // 等待线程执行完毕
return 0;
}
上述示例中,我们定义了一个可执行函数threadFunction
,然后通过创建std::thread
对象并传入该函数来启动一个新线程,最后通过join()
函数等待线程执行完毕。
2. 使用POSIX提供的pthread
POSIX提供了一套多线程API,其中包含了启动线程的函数pthread_create()
,使用步骤如下:
步骤1:定义一个可执行的函数
void* threadFunction(void* arg)
{
// 在这里编写所需要执行的线程代码
return NULL;
}
步骤2:创建一个pthread_t类型的线程变量,然后使用pthread_create()创建线程
#include <pthread.h>
pthread_t myThread;
pthread_create(&myThread, NULL, threadFunction, NULL);
步骤3:等待线程执行结束
pthread_join(myThread, NULL); // 等待线程执行完毕
完整的示例代码如下:
#include <iostream>
#include <pthread.h>
void* threadFunction(void* arg)
{
for(int i = 0; i < 5; i++)
{
std::cout << "Thread ID: " << pthread_self() << " , i = " << i << std::endl;
}
pthread_exit(NULL);
return NULL;
}
int main()
{
pthread_t myThread;
pthread_create(&myThread, NULL, threadFunction, NULL);
pthread_join(myThread, NULL); // 等待线程执行完毕
return 0;
}
上述示例中,我们定义了一个可执行函数threadFunction
,然后通过创建pthread_t
类型的线程变量,并使用pthread_create()
函数以该函数为参数创建了一个新线程,最后通过pthread_join()
函数等待线程执行完毕。
以上两种方法都能够启动一个新线程,使用哪种方法取决于具体情况和个人偏好。总体而言,使用C++11的std::thread
会更加优雅和易用,而使用pthread则更加底层和灵活。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++程序中启动线程的方法 - Python技术站