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

网站开发定价自响应式网站是什么意思

网站开发定价,自响应式网站是什么意思,郑州做网站 熊掌号,泉州哪里有搭建网站的公司线程同步与互斥核心要点整理 一、同步与互斥基础 核心问题: 数据竞争:多线程共享资源(全局变量、文件、数据库)时,CPU时间片轮询可能导致数据错乱。示例:银行账户操作中,存钱与取钱线程并发执行…

线程同步与互斥核心要点整理


一、同步与互斥基础
  1. 核心问题

    • 数据竞争:多线程共享资源(全局变量、文件、数据库)时,CPU时间片轮询可能导致数据错乱。
    • 示例:银行账户操作中,存钱与取钱线程并发执行可能破坏余额一致性。
  2. 关键概念

    • 互斥:同一时间仅一个线程访问临界资源,通过互斥锁实现。
    • 同步:控制线程执行顺序,通过信号量、条件变量实现。
    • 临界资源:多线程共享的资源(如int money)。
    • 临界区:操作临界资源的代码段(如修改money的代码)。

二、互斥锁(pthread_mutex_t
  1. 核心函数

    函数功能参数说明
    pthread_mutex_init()初始化锁(静态/动态)锁指针、属性(NULL为普通锁)
    pthread_mutex_lock()阻塞式加锁锁指针
    pthread_mutex_trylock()非阻塞尝试加锁锁指针
    pthread_mutex_unlock()解锁锁指针
    pthread_mutex_destroy()销毁锁锁指针
  2. 特性

    • 普通锁:重复加锁会导致死锁。
    • 递归锁:允许同一线程多次加锁,通过属性PTHREAD_MUTEX_RECURSIVE_NP设置。
    • 代码示例

      c

       
      pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
      pthread_mutex_lock(&mutex);
      // 临界区操作
      pthread_mutex_unlock(&mutex);

三、死锁与递归锁
  1. 常见死锁场景

    • 重复加锁:同一线程对同一锁多次加锁。
    • 交叉加锁:线程A持有锁1请求锁2,线程B持有锁2请求锁1。
    • 未释放锁:线程异常退出未解锁。
  2. 递归锁解决方案

    • 初始化递归锁
      pthread_mutexattr_t attr;
      pthread_mutexattr_init(&attr);
      pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
      pthread_mutex_init(&mutex, &attr);
    • 递归锁示例:允许函数递归调用时多次加锁。

四、信号量(sem_t
  1. 核心函数

    函数功能参数说明
    sem_init()初始化信号量信号量指针、共享标志(0为线程共享)、初始值
    sem_wait()P操作(信号量减1,阻塞)信号量指针
    sem_post()V操作(信号量加1)信号量指针
    sem_destroy()销毁信号量信号量指针
  2. 应用场景

    • 控制并发线程数:如允许多个线程同时写入日志文件。
    • 生产者-消费者模型:通过信号量协调生产与消费的节奏。
    • 代码示例
      sem_t sem;
      sem_init(&sem, 0, 3); // 允许3个线程并发访问
      sem_wait(&sem); // 进入临界区
      sem_post(&sem); // 退出临界区

五、条件变量(pthread_cond_t
  1. 核心函数

    函数功能参数说明
    pthread_cond_init()初始化条件变量条件变量指针、属性(通常为NULL)
    pthread_cond_wait()阻塞线程,释放锁并等待信号条件变量指针、互斥锁指针
    pthread_cond_signal()唤醒一个等待线程条件变量指针
    pthread_cond_broadcast()唤醒所有等待线程条件变量指针
    pthread_cond_destroy()销毁条件变量条件变量指针
  2. 应用场景

    • 生产者-消费者模型:生产者生产数据后唤醒消费者。
    • 解决空转问题:通过标志位(如flag)判断是否需要等待。
    • 代码示例
      pthread_cond_t cond;
      pthread_mutex_t mutex;
      int flag = 0;
      // 生产者
      pthread_mutex_lock(&mutex);
      flag = 1;
      pthread_cond_signal(&cond);
      pthread_mutex_unlock(&mutex);
      // 消费者
      pthread_mutex_lock(&mutex);
      while (flag == 0) {
      pthread_cond_wait(&cond, &mutex);
      }
      // 消费数据
      pthread_mutex_unlock(&mutex);

六、线程顺序控制
  1. 互斥锁实现顺序控制
    • 示例:通过多把锁强制线程执行顺序(如打印ABC)。
      // 线程A
      pthread_mutex_lock(&a);
      printf("A");
      pthread_mutex_unlock(&b);
      // 线程B
      pthread_mutex_lock(&b);
      printf("B");
      pthread_mutex_unlock(&c);
      // 线程C
      pthread_mutex_lock(&c);
      printf("C");
      pthread_mutex_unlock(&a);

七、生产者-消费者模型优化
  1. 最终版代码逻辑
    • 双条件变量:生产者和消费者使用不同的条件变量(condcond1)。
    • 共用互斥锁:通过flag标志位和循环检查避免空转。
    • 核心代码
      // 生产者
      pthread_mutex_lock(&mutex);
      while (flag != 0) pthread_cond_wait(&cond1, &mutex);
      flag = 1;
      pthread_cond_signal(&cond);
      pthread_mutex_unlock(&mutex);
      // 消费者
      pthread_mutex_lock(&mutex);
      while (flag != 1) pthread_cond_wait(&cond, &mutex);
      flag = 0;
      pthread_cond_signal(&cond1);
      pthread_mutex_unlock(&mutex);

八、机制对比与最佳实践
机制用途特点
互斥锁保证临界资源独占访问简单高效,但无法控制顺序
信号量控制并发线程数量可设置资源池大小(如连接池)
条件变量线程间状态通知与协作需配合互斥锁,解决复杂同步问题

最佳实践

  1. 避免死锁:按固定顺序请求锁,使用超时机制(如pthread_mutex_trylock)。
  2. 减少锁粒度:仅对必要代码段加锁,缩短临界区。
  3. 优先使用高层同步机制:条件变量适合复杂同步逻辑,信号量适合资源池控制。
http://www.dtcms.com/wzjs/552372.html

相关文章:

  • 中小企业网站提供了什么iphone下载网页视频
  • 合肥网站建设市场wordpress不能编辑文章
  • 电商素材网站怎么做售房网站
  • 苏州公司网站建设唐山快速建站的公司
  • 游戏运营备案官方网站工作总结个人范文
  • 网站keywords标签怎么写博客网站搭建
  • 俄文手机网站制作wordpress 数据库插件
  • 设计网站账号广州工商注册流程
  • 做网站备案必须是个人还是公司网站建设行业研究
  • 留言网站建设杭州九鸿科技网站开发
  • 网站建设目的及意义素材网站开发
  • 做充气气模产品一般去哪些网站自己做的网站背景怎么设置
  • 外贸推广用中文网站做支付行业招代理一般上什么网站
  • 如何建立一个网站分享教程软件开发项目验收报告
  • 哈尔滨网站建设方案微信号 网站模板
  • 招生门户网站建设方案建设企业银行电脑版怎么下载
  • 网站站点风格如何开个公司网站
  • 大连模板网站制作推荐工业设计公司属于什么行业
  • 石家庄营销推广网站wordpress 图片 空间
  • 一个备案号多个网站义乌建设局网站打不开
  • 超市网站模板盐城网站开发代理商
  • 谷歌网站地图seo有哪些优化工具
  • 哈尔滨建设网站公司吗小米wordpress
  • 网站开发前后端工具组合常用网站推广方法
  • 国外做网站建设银行网上银行网站可以开通网银
  • 网站建设全程揭秘pdfwordpress 模板分页
  • 网站建设实训致谢怎么建立一个简易的网站
  • flash网站源码寿光网络推广公司
  • 百度快速收录网站网站标题乱码
  • 如何用源码建站wordpress基础版