21xrx.com
2024-12-22 22:45:32 Sunday
登录
文章检索 我的文章 写文章
C++多线程的实现方法
2023-07-05 12:30:41 深夜i     --     --
C++ 多线程 实现方法

C++中实现多线程可以使用多种方法,其中最常用的两种方法是使用C++11中提供的std::thread库和使用POSIX线程库。

std::thread库

std::thread库是C++11标准中提供的线程库,它能够方便地创建和管理线程。通过该库,可以在程序中创建多个线程并发执行,提高程序的并发性能。

下面是一个使用std::thread库创建线程的示例代码:


#include <iostream>

#include <thread>

void my_function(int n)

  std::cout << "Thread " << n << " is running" << std::endl;

int main() {

  std::thread t1(my_function, 1);

  std::thread t2(my_function, 2);

  

  t1.join();

  t2.join();

  

  return 0;

}

以上代码定义了一个函数my_function,该函数会输出当前线程的编号。在main函数中,我们创建了两个线程t1和t2,分别执行my_function函数,并传递不同的参数。最后,程序通过调用join函数等待线程执行完毕并回收资源。

POSIX线程库

POSIX线程(缩写为pthread)是一种实现了POSIX标准接口的线程库,它由IEEE开发,被广泛使用在 Unix-like操作系统中。

在C++程序中使用POSIX线程需要包含pthread.h头文件,并使用pthread_create和pthread_join函数创建和管理线程。下面是一个使用POSIX线程库创建线程的示例代码:


#include <iostream>

#include <pthread.h>

void* my_function(void *arg) {

  int n = *(int*)arg;

  std::cout << "Thread " << n << " is running" << std::endl;

  return NULL;

}

int main() {

  pthread_t t1, t2;

  int n1 = 1, n2 = 2;

  

  pthread_create(&t1, NULL, my_function, &n1);

  pthread_create(&t2, NULL, my_function, &n2);

  

  pthread_join(t1, NULL);

  pthread_join(t2, NULL);

  

  return 0;

}

以上代码定义了一个函数my_function,该函数会输出当前线程的编号。在main函数中,我们使用pthread_create函数创建了两个线程t1和t2,分别执行my_function函数,并传递不同的参数。最后,程序通过调用pthread_join函数等待线程执行完毕并回收资源。

需要注意的是,POSIX线程库在不同的操作系统中支持的特性可能会有所不同,因此在使用时需要根据操作系统的限制进行设置。

总结

C++中实现多线程有多种方法,其中最常用的两种方法是使用std::thread库和使用POSIX线程库。无论使用哪种方法,多线程的实现都能够提高程序的并发性能,增加程序的稳定性。在使用时需要注意各种限制条件和注意事项,以确保程序的正确性和可靠性。

  
  

评论区

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