温馨提示×

centos下c++如何配置多线程

小樊
45
2026-10-17 15:31:35
栏目: 编程语言

在 CentOS 下用 C++ 配置和使用多线程,通常有两种主流方式:

  1. POSIX 线程(pthread)(传统方式,CentOS 默认支持)
  2. C++11 标准线程(std::thread)(推荐,现代 C++)

下面分别说明,并给出编译方式。


一、使用 C++11 std::thread(推荐)

1️⃣ 示例代码

#include <iostream>
#include <thread>

void worker(int id) {
    std::cout << "Thread " << id << " is running\n";
}

int main() {
    std::thread t1(worker, 1);
    std::thread t2(worker, 2);

    t1.join();
    t2.join();

    return 0;
}

2️⃣ 编译(CentOS)

g++ -std=c++11 -pthread thread_demo.cpp -o thread_demo

⚠️ -pthread 很重要,既加编译参数也加链接参数

3️⃣ 运行

./thread_demo

二、使用 POSIX 线程(pthread)

1️⃣ 示例代码

#include <iostream>
#include <pthread.h>

void* worker(void* arg) {
    long id = (long)arg;
    std::cout << "pthread " << id << "\n";
    return nullptr;
}

int main() {
    pthread_t t1, t2;

    pthread_create(&t1, nullptr, worker, (void*)1);
    pthread_create(&t2, nullptr, worker, (void*)2);

    pthread_join(t1, nullptr);
    pthread_join(t2, nullptr);

    return 0;
}

2️⃣ 编译

g++ pthread_demo.cpp -o pthread_demo -lpthread

三、CentOS 环境准备

1️⃣ 安装 GCC(一般已自带)

gcc --version
g++ --version

若版本过低(< 4.8),建议升级:

yum install centos-release-scl
yum install devtoolset-9
scl enable devtoolset-9 bash

四、查看 CPU 核心数(多线程优化)

#include <thread>
std::thread::hardware_concurrency();

或者命令行:

nproc

五、常见问题

❌ 编译报错 std::thread not found

  • 没加 -std=c++11
  • 没加 -pthread

❌ 链接错误 undefined reference to pthread_*

  • 忘记 -pthread 或 -lpthread

六、推荐做法(总结)

✅ 新项目:用 std::thread
✅ 老系统 / C 接口:用 pthread
✅ 编译必加:-pthread

如果你有 具体场景(如线程池、生产者消费者、锁、CentOS 7/8),我可以给你更完整的示例。

0 踩