温馨提示×

linux pthread_join如何正确使用

小樊
81
2024-12-29 12:11:25
栏目: 智能运维

pthread_join是Linux中用于等待一个或多个线程完成的函数

下面是一个简单的示例,展示了如何使用pthread_join正确等待线程完成:

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

// 线程函数
void *thread_function(void *arg) {
    int thread_id = *(int *)arg;
    printf("Thread %d is running.\n", thread_id);
    sleep(1); // 模拟线程工作
    printf("Thread %d is finished.\n", thread_id);
    return NULL;
}

int main() {
    pthread_t threads[5]; // 创建5个线程
    int thread_ids[5];  // 存储线程ID

    // 创建线程并存储它们的ID
    for (int i = 0; i < 5; i++) {
        thread_ids[i] = i;
        if (pthread_create(&threads[i], NULL, thread_function, &thread_ids[i]) != 0) {
            perror("Failed to create thread");
            exit(EXIT_FAILURE);
        }
    }

    // 等待所有线程完成
    for (int i = 0; i < 5; i++) {
        if (pthread_join(threads[i], NULL) != 0) {
            perror("Failed to join thread");
            exit(EXIT_FAILURE);
        }
    }

    printf("All threads have finished.\n");
    return 0;
}

在这个示例中,我们创建了5个线程,并将它们的ID传递给每个线程。然后,我们使用pthread_join等待每个线程完成。当所有线程完成后,我们打印一条消息表示所有线程已完成。

0