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

做网站运营怎么样甲马营seo网站优化的

做网站运营怎么样,甲马营seo网站优化的,浙江省通信管理局 网站备案 管理部门,网站建设用什么字体线程同步与互斥核心要点整理 一、同步与互斥基础 核心问题: 数据竞争:多线程共享资源(全局变量、文件、数据库)时,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/465584.html

相关文章:

  • 做门户网站经验深圳外贸seo
  • 做拍卖网站多少钱淘客推广怎么做
  • 网站建设实训总结百度网盘app下载安装官方免费版
  • 企业型网站开发吸引人气的营销方案
  • 怎么将自己做的网站放到网上四种营销策略
  • 黑色装修网站源码dedeseo推广公司有哪些
  • 做网站在浏览器预览怎么出现了状况自己如何制作一个小程序
  • 网站开发字体选择湖南 seo
  • 股票网站怎么做兰州网站seo服务
  • 网页设计与制作教程哪里有看成都网站seo外包
  • 宁波外贸公司一览表安徽seo优化
  • 单页面个人网站360推广客服电话是多少
  • 目前做哪个网站致富抖音推广引流平台
  • 辽宁网站建设培训班班级优化大师学生版
  • wordpress 文章点赞插件英文seo实战派
  • 网站页面设计网页说明最新搜索引擎排名
  • 网站建立初步教案厦门seo优化
  • 服务器建设一个自己的网站广告传媒公司经营范围
  • 山东金城建设网站营销推广是什么
  • 外贸网站建设网站优化全网线报 实时更新
  • 泰州seo网站推广优化怎么注册百度账号
  • 上海公司注册一网通办英文关键词seo
  • 免费设计logo的软件有哪些整站seo排名要多少钱
  • 网站规划设计说明书发外链的网址
  • 没有网站可以做seo吗深圳搜索引擎
  • 福建建设银行网站网络营销推广的概念
  • 手表网站素材天猫seo搜索优化
  • 网站配色网seo营销方案
  • 阿里云 建设网站chrome网页版入口
  • 阿里云安装两个wordpressseo排名工具有哪些