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

潍坊设计网站在线培训系统平台

潍坊设计网站,在线培训系统平台,腾讯云服务器用什么做网站,静态网站注入pthread 条件变量使用注意 使用 pthread_cond_timedwait 等待条件变量时,其默认使用的为系统时间,若在其等待期间修改系统时间,则会导致其提前结束。 测试步骤 运行以下代码。 使用 date 命令查看系统时间,假设输出为 Thu Jan …

pthread 条件变量使用注意

  • 使用 pthread_cond_timedwait 等待条件变量时,其默认使用的为系统时间,若在其等待期间修改系统时间,则会导致其提前结束。

测试步骤

  • 运行以下代码。

  • 使用 date 命令查看系统时间,假设输出为 Thu Jan 1 08:01:53 AM CST 1970

  • 使用 date -s 08:03:53 设置系统时间,程序会立刻退出,并打印 wait timed out

    #include <pthread.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <errno.h>
    #include <unistd.h>pthread_cond_t g_cond;
    pthread_mutex_t g_mutex;void* thread1_func(void* arg)
    {// 必须先获取互斥锁pthread_mutex_lock(&g_mutex);// 获取当前时间struct timespec ts;clock_gettime(CLOCK_REALTIME, &ts);// 设置等待时间为 100 秒ts.tv_sec += 100;// 等待条件变量被唤醒,或者等待时间超时printf("waiting cond signal\n");int ret = pthread_cond_timedwait(&g_cond, &g_mutex, &ts);if (ret == 0) {printf("get cond signaled\n");} else if (ret == ETIMEDOUT) {printf("wait timed out\n");} else {printf("wait failed\n");}// 解锁pthread_mutex_unlock(&g_mutex);return NULL;
    }int main()
    {pthread_cond_init(&g_cond, NULL);pthread_mutex_init(&g_mutex, NULL);// 创建线程pthread_t th1;pthread_create(&th1, NULL, thread1_func, NULL);// 等待线程结束pthread_join(th1, NULL);pthread_mutex_destroy(&g_mutex);pthread_cond_destroy(&g_cond);return 0;
    }
    

解决方案

  • 初始化条件变量时,设置其使用稳定时钟即可。

  • 示例代码如下:

    #include <pthread.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <errno.h>
    #include <unistd.h>pthread_cond_t g_cond;
    pthread_mutex_t g_mutex;void* thread1_func(void* arg)
    {// 必须先获取互斥锁pthread_mutex_lock(&g_mutex);// 获取当前时间struct timespec ts;// 此处与上文不同clock_gettime(CLOCK_MONOTONIC, &ts);// 设置等待时间为 100 秒ts.tv_sec += 100;// 等待条件变量被唤醒,或者等待时间超时printf("waiting cond signal\n");int ret = pthread_cond_timedwait(&g_cond, &g_mutex, &ts);if (ret == 0) {printf("get cond signaled\n");} else if (ret == ETIMEDOUT) {printf("wait timed out\n");} else {printf("wait failed\n");}// 解锁pthread_mutex_unlock(&g_mutex);return NULL;
    }int main()
    {pthread_condattr_t condattr;pthread_condattr_init(&condattr);// 设置使用稳定时钟pthread_condattr_setclock(&condattr, CLOCK_MONOTONIC);pthread_cond_init(&g_cond, &condattr);pthread_mutex_init(&g_mutex, NULL);// 创建线程pthread_t th1;pthread_create(&th1, NULL, thread1_func, NULL);// 等待线程结束pthread_join(th1, NULL);pthread_mutex_destroy(&g_mutex);pthread_cond_destroy(&g_cond);return 0;
    }
    
http://www.hrbkazy.com/news/9411.html

相关文章:

  • 长沙网站seo收费标准竞价软件哪个好
  • 事业单位网站登录模板万网域名管理入口
  • 邹城做网站seo推广人员
  • pjblog wordpressseo广告
  • 做网站1000以下哪家好公司网站建设方案
  • 江西个人网站备案长沙本地推广联系电话
  • php wordpress 配置seo搜索排名
  • 网站建设价格标准报价seo外包公司专家
  • 做网站代码用什么软件微商引流推广
  • 茂名模板建站定制网站竞价推广怎么样
  • 南京h5制作公司360优化大师软件
  • 营销型网站开发推广宁波seo推荐推广渠道
  • 动态网站开发考试品牌运营推广方案
  • 出入库软件永久免费襄阳seo推广
  • 右安门网站建设广告推广宣传
  • 阿里云 建网站攻略百度图片识别在线识图
  • 品牌策划公司怎么样宁波关键词优化排名工具
  • 150m网站空间流量大吗重庆seo整站优化效果
  • b2b网站排名前十广告优化师的工作内容
  • 杭州网站维护慧生活798app下载
  • 网站做轮播图的意义b2b电商平台
  • wordpress英文建站神马推广
  • 珠海建设公司网站深圳媒体网络推广有哪些
  • 做网站推广google框架一键安装
  • 企业销售网站建设泰安网站seo
  • 顶级软装设计公司优化大师破解版app
  • 查看网站robots互联网营销工具
  • 销售订单管理系统软件seo与网络推广的区别和联系
  • 义乌网站建设公司代理快速网站排名提升工具
  • 如何再工商局网站做设备抵押福建百度代理公司