温馨提示×

linux pthread_join参数怎么传递

小樊
81
2024-12-29 12:14:26
栏目: 智能运维

pthread_join 函数用于等待一个或多个线程完成

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

void *thread_function(void *arg);

int main() {
    pthread_t thread1, thread2;
    int result1, result2;

    // 创建第一个线程
    if (pthread_create(&thread1, NULL, thread_function, (void *)1) != 0) {
        perror("Error creating thread 1");
        exit(EXIT_FAILURE);
    }

    // 创建第二个线程
    if (pthread_create(&thread2, NULL, thread_function, (void *)2) != 0) {
        perror("Error creating thread 2");
        exit(EXIT_FAILURE);
    }

    // 等待第一个线程完成
    result1 = pthread_join(thread1, NULL);
    if (result1 != 0) {
        perror("Error joining thread 1");
        exit(EXIT_FAILURE);
    }

    // 等待第二个线程完成
    result2 = pthread_join(thread2, NULL);
    if (result2 != 0) {
        perror("Error joining thread 2");
        exit(EXIT_FAILURE);
    }

    printf("Both threads have finished.\n");

    return 0;
}

void *thread_function(void *arg) {
    int thread_id = *(int *)arg;
    printf("Thread %d is running.\n", thread_id);
    return NULL;
}

在这个示例中,我们创建了两个线程,并将它们分别与整数 12 关联。pthread_join 函数的第一个参数是要等待的线程的标识符(在这里是 thread1thread2),第二个参数是一个指向指针的指针,该指针将存储线程返回的值。在这个例子中,我们传递 NULL 作为第二个参数,因为我们不关心线程返回的值。

0