pthread_join 用法
    pthread_join是pthread库提供的函数,用于等待一个指定的线程结束。其函数原型为:
    ```
    int pthread_join(pthread_t thread, void **retval);
    ```
    其中,thread 参数为要等待的线程的标识符;retval 参数用于获取该线程的返回值(如果有的话)。
    使用 pthread_join 的一般步骤如下:join的四种用法
    1. 创建需要等待的线程,获取其标识符:pthread_create(&thread, NULL, start_routine, arg)
    2. 使用 pthread_join 等待线程结束:pthread_join(thread, &retval)
    3. 在等待线程结束后,可以使用 retval 获取该线程的返回值。
    需要注意的是,如果线程已经被等待过一次,那么再次调用 pthread_join 会返回 EINVAL 错误。此外,在等待线程结束之前,不能调用 pthread_cancel 取消该线程。
    使用 pthread_join 可以保证主线程在子线程结束之前不会退出,从而避免了子线程可能会在主线程退出后继续运行的问题。因此,在多线程编程中,使用 pthread_join 是很常见的操作。