温馨提示×

centos怎么配置c多线程

小樊
52
2026-09-11 22:05:10
栏目: 智能运维

在 CentOS 上配置和使用 C 语言多线程,本质上就是使用 POSIX 线程(pthread)。下面从「环境准备 → 编译 → 示例 → 常见问题」一步步说明。


一、CentOS 环境准备

1. 安装 GCC(一般 CentOS 已自带)

gcc --version

如果没有:

sudo yum install gcc

2. 确认 pthread 支持

pthread 是 glibc 的一部分,CentOS 默认支持,不需要额外安装库。


二、最简单的 C 多线程示例

示例:thread_demo.c

#include <pthread.h>
#include <stdio.h>
#include <unistd.h>

void* thread_func(void* arg) {
    int id = *(int*)arg;
    printf("线程 %d 开始\n", id);
    sleep(1);
    printf("线程 %d 结束\n", id);
    return NULL;
}

int main() {
    pthread_t tid[3];
    int ids[3];

    for (int i = 0; i < 3; i++) {
        ids[i] = i;
        pthread_create(&tid[i], NULL, thread_func, &ids[i]);
    }

    for (int i = 0; i < 3; i++) {
        pthread_join(tid[i], NULL);
    }

    printf("主线程结束\n");
    return 0;
}

三、编译(重点)

必须链接 pthread 库

方式 1(推荐)

gcc thread_demo.c -o thread_demo -pthread

方式 2(老写法)

gcc thread_demo.c -o thread_demo -lpthread

运行:

./thread_demo

四、常见多线程相关配置

1. 设置线程数量(CPU 核心数)

nproc

C 中获取:

#include <unistd.h>
int n = sysconf(_SC_NPROCESSORS_ONLN);

2. 线程属性(分离线程)

pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_create(&tid, &attr, func, NULL);

3. 线程同步(互斥锁)

pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;

pthread_mutex_lock(&lock);
// 临界区
pthread_mutex_unlock(&lock);

五、常见问题

❌ 编译报错:undefined reference to pthread_create

✅ 原因:没加 -pthread


❌ 程序直接退出

✅ 原因:主线程没 pthread_join


❌ CentOS 7 / 8 差异

  • CentOS 7:glibc 2.17,pthread 完全支持
  • CentOS 8 / Stream:默认仍支持 pthread

六、进阶建议

  • OpenMP(简单并行)
gcc omp.c -fopenmp
  • 线程池(高并发服务器)
  • 使用 pthread_barrier(线程同步)

如果你有具体需求(比如:

  • 服务器多线程
  • 线程池
  • 多核优化
  • CentOS 版本问题)

可以告诉我,我可以直接给你对应代码。

0 踩