pthread如何实现线程的挂起请用代码实现。
pthread可以通过调用pthread_cond_wait()函数实现线程的挂起。具体实现如下:
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // 定义互斥锁
pthread_cond_t cond = PTHREAD_COND_INITIALIZER; // 定义条件变量
void* thread_func(void* arg) {
    // 获取互斥锁
    pthread_mutex_lock(&mutex);
    // 等待条件变量
    pthread_cond_wait(&cond, &mutex);
    // 当条件变量满足时,执行以下代码
    printf("Thread is waken up.\n");
    // 释放互斥锁
    pthread_mutex_unlock(&mutex);
    return NULL;
}
int main() {
    pthread_t tid;
    // 创建线程
    pthread_create(&tid, NULL, thread_func, NULL);
    // 睡眠3秒,模拟一些操作
    sleep(3);
    // 发送信号,唤醒线程
    pthread_cond_signal(&cond);
    // 等待线程结束
    pthread_join(tid, NULL);
    return 0;
}
在上面的代码中,线程在执行过程中会调用pthread_cond_wait()函数挂起,等待条件变量cond满足后再继续执行。主线程通过调用pthread_cond_signal()函数发送信号,唤醒被挂起的线程。在实际应用中,条件变量通常和互斥锁一起使用,以保证线程的安全性。
原文地址: https://www.cveoy.top/t/topic/btNC 著作权归作者所有。请勿转载和采集!