117.info
人生若只如初见

linux pthread_join在进程间通信中的用法

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

下面是一个简单的示例,展示了如何在两个线程之间使用 pthread_join 进行同步:

#include 
#include 
#include 

// 线程函数
void *thread_function(void *arg) {
    int thread_id = *(int *)arg;
    printf("Thread %d is running.\n", thread_id);
    sleep(1); // 模拟线程执行耗时任务
    printf("Thread %d is done.\n", thread_id);
    return NULL;
}

int main() {
    pthread_t thread1, thread2;
    int thread_ids[2];

    // 创建第一个线程
    if (pthread_create(&thread1, NULL, thread_function, (void *)&thread_ids[0]) != 0) {
        perror("Failed to create thread 1");
        exit(EXIT_FAILURE);
    }

    // 创建第二个线程
    if (pthread_create(&thread2, NULL, thread_function, (void *)&thread_ids[1]) != 0) {
        perror("Failed to create thread 2");
        exit(EXIT_FAILURE);
    }

    // 等待第一个线程完成
    printf("Waiting for thread 1 to finish...\n");
    pthread_join(thread1, NULL);

    // 等待第二个线程完成
    printf("Waiting for thread 2 to finish...\n");
    pthread_join(thread2, NULL);

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

    return 0;
}

在这个示例中,我们创建了两个线程,并将它们的 ID 传递给它们。主线程等待这两个线程完成,然后继续执行。输出结果如下:

Thread 0 is running.
Thread 1 is running.
Waiting for thread 1 to finish...
Thread 1 is done.
Waiting for thread 2 to finish...
Thread 0 is done.
All threads have finished.

注意,pthread_join 会阻塞主线程,直到对应的线程完成。在这个例子中,主线程在 pthread_join 之后继续执行,打印 “All threads have finished.”。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe97aAzsKAARQDVY.html

推荐文章

  • linux搭建gitlab有哪些步骤

    在Linux系统上搭建GitLab涉及多个步骤,包括准备工作、安装依赖、配置服务器、下载并安装GitLab软件包、启动GitLab服务以及访问GitLab。以下是详细的步骤说明:<...

  • linux搭建gitlab难不难

    在Linux上搭建GitLab是一个相对直接的过程,但需要一定的系统管理知识。以下是基于不同Linux发行版的安装步骤和注意事项:
    Ubuntu/Debian 安装步骤: 更新系...

  • linux搭建gitlab支持多用户吗

    是的,Linux上搭建的GitLab支持多用户 安装GitLab:首先,你需要在Linux服务器上安装GitLab。你可以按照GitLab官方文档中的说明进行安装:https://about.gitlab....

  • linux搭建gitlab怎样备份数据

    在Linux上搭建GitLab并备份数据,可以按照以下步骤进行:
    1. 安装GitLab
    首先,确保你的Linux系统已经安装了必要的依赖包。以Debian/Ubuntu为例:

  • linux pthread_join线程等待机制是啥

    pthread_join是Linux操作系统中用于等待一个或多个线程完成的函数
    pthread_join的基本语法如下:
    int pthread_join(pthread_t thread, void **retval)...

  • linux pthread_join和pthread_detach区别

    pthread_join 和 pthread_detach 是 Linux 中两种不同的线程管理函数,它们在处理线程结束时的行为上有所区别 pthread_join:
    pthread_join 函数用于等待一...

  • linux pthread_join对资源释放的影响

    pthread_join 是 Linux 中用于等待一个或多个线程完成的函数 避免数据竞争:当一个线程正在修改共享数据时,另一个线程尝试访问这些数据可能会导致数据竞争。为了...

  • linux pthread_join如何获取线程返回值

    在Linux中,使用pthread_join()函数可以等待一个线程完成执行并获取其返回值
    #include #include #include void *my_thread(void *arg) { int *result = (in...