21xrx.com
2024-11-22 07:51:11 Friday
登录
文章检索 我的文章 写文章
如何在Linux C++中创建线程
2023-07-04 19:01:33 深夜i     --     --
Linux C++ 线程 创建

在Linux C++中创建线程可以让我们的程序同时执行多个任务,这样在提高程序效率和减少等待时间方面都有着很大的作用。本文将介绍如何在Linux C++中创建线程。

使用pthread库创建线程

在Linux C++中,我们可以使用pthread库中的pthread_create函数来创建线程。该函数的原型如下:


int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);

其中,thread是线程的标识符,attr是线程属性,start_routine是线程的主函数,arg是传递给线程函数的参数。

下面是一个简单的示例代码,创建了一个新的线程来输出一些信息:


#include <pthread.h>

#include <stdio.h>

#include <stdlib.h>

void *func(void *arg) {

  printf("This is a new thread.\n");

  pthread_exit(NULL);

}

int main() {

  pthread_t tid;

  int ret;

  ret = pthread_create(&tid, NULL, func, NULL);

  if (ret != 0) {

    perror("pthread_create");

    exit(EXIT_FAILURE);

  }

  pthread_join(tid, NULL);

  printf("Main thread exit.\n");

  return 0;

}

在该示例代码中,我们定义了一个新的线程函数func,该函数在新线程中运行。在main函数中使用pthread_create函数创建了一个新线程,并将该线程的标识符存储在tid中。在创建完线程后,我们通过pthread_join函数等待线程结束,并在屏幕上输出一些信息来表示主线程的运行结束。

使用C++11标准库创建线程

另一种在Linux C++中创建线程的方法是使用C++11标准库中的std::thread类。该类封装了线程的创建和管理,可以方便地创建和控制线程。

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


#include <iostream>

#include <thread>

void func()

  std::cout << "This is a new thread." << std::endl;

int main() {

  std::thread t(func);

  t.join();

  std::cout << "Main thread exit." << std::endl;

  return 0;

}

在该示例代码中,我们使用std::thread创建了一个新线程,并将函数func的地址作为参数传递给了std::thread的构造函数。在创建完线程后,我们通过t.join()等待线程结束,然后在屏幕上输出一些信息来表示主线程的运行结束。

总结

在Linux C++中,我们可以使用pthread库或C++11标准库来创建线程。使用pthread库需要手动管理线程的创建和销毁,使用C++11标准库则更加方便,尤其是在跨平台开发中使用。但无论哪种方法,都需要注意线程的同步和互斥,以避免线程间的冲突和竞争。

  
  
下一篇: Dev-C++官方网站

评论区

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