当前位置: 首页 > news >正文

怎么选择佛山网站设计搜索引擎推广的三种方式

怎么选择佛山网站设计,搜索引擎推广的三种方式,电商网站建设优化,养老院网站建设的费用目录 条件变量基本原理 初始化条件变量:pthread_cond_init 等待条件变量 :pthread_cond_wait 唤醒所有等待线程:pthread_cond_broadcast 销毁条件变量:pthread_cond_destroy 示例代码 条件变量基本原理 条件变量&#xff08…

目录

条件变量基本原理

初始化条件变量:pthread_cond_init

等待条件变量 :pthread_cond_wait

唤醒所有等待线程:pthread_cond_broadcast

销毁条件变量:pthread_cond_destroy

示例代码


条件变量基本原理

        条件变量(Condition Variable)是多线程编程中用于线程同步的一种机制,它允许线程在某个条件满足时被唤醒。
        条件变量通常与互斥锁配合使用。线程在检查某个条件是否满足之前,先获取互斥锁以保护共享资源。如果条件不满足,线程会释放互斥锁并在条件变量上等待。当其他线程修改了共享资源使得条件满足时,它会通知在该条件变量上等待的线程。等待的线程被唤醒后,会重新获取互斥锁,然后检查条件是否真的满足(因为可能存在虚假唤醒,即线程被唤醒但条件实际上并未满足)。

初始化条件变量:pthread_cond_init

  • 函数原型
int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr);
  • 功能:初始化一个条件变量。
  • 参数
    • cond:指向要初始化的条件变量的指针。
    • attr:用于指定条件变量的属性,通常设为 NULL 使用默认属性。
  • 返回值:成功时返回 0,失败时返回非零错误码。

等待条件变量 :pthread_cond_wait

  • 函数原型
int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);
  • 功能:使调用线程在条件变量 cond 上等待。调用该函数前,线程必须已经获取了互斥锁 mutex。函数会自动释放互斥锁,并将线程置于等待状态,直到条件变量被其他线程通过 pthread_cond_signal 或 pthread_cond_broadcast 唤醒。唤醒后,线程会重新获取互斥锁。
  • 参数
    • cond:指向要等待的条件变量的指针。
    • mutex:指向与条件变量关联的互斥锁的指针。
  • 返回值:成功时返回 0,失败时返回非零错误码。

唤醒一个等待线程:pthread_cond_signal

  • 函数原型
int pthread_cond_signal(pthread_cond_t *cond);
  • 功能:唤醒在条件变量 cond 上等待的一个线程。如果有多个线程在等待,具体唤醒哪个线程是由系统决定的。
  • 参数cond:指向要操作的条件变量的指针。
  • 返回值:成功时返回 0,失败时返回非零错误码。

唤醒所有等待线程:pthread_cond_broadcast

  • 函数原型
int pthread_cond_broadcast(pthread_cond_t *cond);
  • 在条件变量 cond 上等待的所有线程。
  • 参数cond:指向要操作的条件变量的指针。
  • 返回值:成功时返回 0,失败时返回非零错误码。

销毁条件变量:pthread_cond_destroy

  • 函数原型
int pthread_cond_destroy(pthread_cond_t *cond);
  • 功能:销毁一个已初始化的条件变量,释放相关资源。在销毁条件变量之前,应确保没有线程在该条件变量上等待。
  • 参数cond:指向要销毁的条件变量的指针。
  • 返回值:成功时返回 0,失败时返回非零错误码。

示例代码

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
int ready = 0;void* waiter(void* arg) {pthread_mutex_lock(&mutex);while (!ready) {printf("Waiting for condition...\n");pthread_cond_wait(&cond, &mutex);}printf("Condition met. Continuing...\n");pthread_mutex_unlock(&mutex);return NULL;
}void* signaler(void* arg) {pthread_mutex_lock(&mutex);ready = 1;printf("Setting condition...\n");pthread_cond_signal(&cond);pthread_mutex_unlock(&mutex);return NULL;
}int main() {pthread_t thread1, thread2;pthread_create(&thread1, NULL, waiter, NULL);pthread_create(&thread2, NULL, signaler, NULL);pthread_join(thread1, NULL);pthread_join(thread2, NULL);pthread_mutex_destroy(&mutex);pthread_cond_destroy(&cond);return 0;
}

代码说明:

  • waiter 线程获取互斥锁后,检查 ready 条件。如果 ready 为 0,它会调用 pthread_cond_wait 等待条件变量,并释放互斥锁。
  • signaler 线程获取互斥锁,设置 ready 为 1,然后调用 pthread_cond_signal 唤醒 waiter 线程,最后释放互斥锁。
  • waiter 线程被唤醒后,重新获取互斥锁,检查 ready 条件,发现条件满足后继续执行。最后,主线程等待两个线程完成,并销毁互斥锁和条件变量。
http://www.dinnco.com/news/54067.html

相关文章:

  • 商家货源网seo搜索引擎推广
  • ps如何做网页设计百度怎么优化排名
  • 湖北建站公司怎么在百度上推广自己的店铺
  • 厦门网站制作方案seo关键字优化技巧
  • 用手机可以建设一个手机网站吗酒店推广渠道有哪些
  • 百度做公司网站多少钱网站权重如何查询
  • 网站开发的研究背景谷歌google下载安卓版 app
  • 太原微商网站建设免费大数据平台
  • wordpress代码发布文章福州短视频seo方法
  • 网站建设业务渠道郑州网站运营实力乐云seo
  • 个性化的个人网站简易软文营销实施背景
  • 万维网网站服务的名称做网站的公司哪家最好
  • wordpress文章怎么输出深圳专业seo
  • 网站没有内容可以备案吗湖南百度推广
  • 做网站然后卖市场营销活动策划方案
  • 青县住房和城乡建设局网站惠州seo网站推广
  • 网站建设 客户评价企业网站策划
  • 自己怎么建网站卖东西本地网络seo公司
  • 株洲新闻网红网株洲站杭州seo推广公司
  • 石景山区城乡建设委员会网站百度人工电话
  • 北京城建建设工程有限公司seo搜索引擎专员
  • php学多久可以做网站如何建立一个自己的网站啊
  • 怎么免费建设自己网站网站制作郑州
  • wordpress slider使用seo排名点击器
  • 怎么注册企业网站域名咨询网络服务商
  • 淘宝上做的网站可以优化吗淘宝关键词推广
  • 广告联盟建设个人网站百度链接提交
  • 计算机哪方面技术吃香电脑系统优化软件排行榜
  • 网站建设难点分析天津百度网站快速排名
  • 山西省住房和城乡建设厅网站自媒体平台注册官网下载