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

响应式网站尺寸古典风网站

响应式网站尺寸,古典风网站,多少钱可以注册一个公司,上海做网站定制目录 互斥锁条件变量读写锁信号量CAS-- 参考 线程同步方式有互斥锁,条件变量,信号量,读写锁,CAS锁等方式 互斥锁 互斥量 pthread_mutex_t在执行操作之前加锁,操作完之后解锁. 使用互斥量,来确保同一时刻只…

目录

  • 互斥锁
  • 条件变量
  • 读写锁
  • 信号量
  • CAS
  • -- 参考

线程同步方式有互斥锁,条件变量,信号量,读写锁,CAS锁等方式

互斥锁

  • 互斥量 pthread_mutex_t
  • 在执行操作之前加锁,操作完之后解锁. 使用互斥量,来确保同一时刻只有一个线程访问某项共享资源。
  • A线程加锁了,B线程无法释放A线程加的锁,只能等A线程自己释放,锁释放后再竞争锁
pthread_mutex_t lock;//创建锁
pthread_mutex_init();//初始化锁
pthread_mutex_lock();//加锁
pthread_mutex_unlock();//解锁
pthread_mutex_destroy();//销毁锁

条件变量

  • 条件变量可以同时唤醒一个或多个线程,信号量只能唤醒一个,唤醒多个线程的时候,通常涉及到资源竞争,往往配合互斥锁使用
  • 条件变量是线程的另一种同步机制,它和互斥量是一起使用的。互斥量的目的就是为了加锁,而条件变量的结合,使得线程能够以等待的状态来迎接特定的条件发生,而不需要频繁查询锁。
pthread_cond_t cond; //创建条件变量
pthread_cond_init();//初始化条件变量
pthread_cond_wait();//线程进入阻塞,等待信号被唤醒
pthread_cond_timedwait();//线程进入阻塞,一定时间后被唤醒
pthread_cond_signal();//满足条件后一次通知一个
pthread_cond_broadcast();//满足条件后一次通知多个
pthread_cond_destroy(); //销毁条件变量

读写锁

  • 以读方式给数据加锁--------读锁。以写方式给数据加锁---------写锁。
    读共享,写独占。
    写锁优先级高。
  • 当线程A处于读的状态,线程B也可以读,但是不能写,当线程A处于写的状态,线程B则不能读,适用与少写多读的场景
pthread_rwlock_t rwlock;//创建读写锁
pthread_rwlock_init();//初始化锁
pthread_rwlock_rdlock();//加读锁
pthread_rwlock_wrlock();//加写锁
pthread_rwlock_trywrlock();//try锁
pthread_rwlock_unlock();//解锁
pthread_rwlock_destroy();//销毁锁多的时候,提高访问效率

信号量

  • 信号量是一种特殊的变量,用来控制对临界资源的使用,在多个进程或线程都要访问临界资源的时候,就需要控制多个进行或线程对临界资源的使用。
  • 信号量机制通过p、v操作实现。p操作:原子减1,申请资源,当信号量为0时,p操作阻塞;v操作:原子加1,释放资源。
  sem_t sem;int sem_init(sem_t *sem, int pshared, unsigned int value);//初始化//pshared传零用于线程间同步,传1用于进程和线程间同步//value也就是Nint sem_wait(sem_t *sem);//加锁系信号量,信号量大于0,信号--操作,信号量等于0阻塞int sem_trywait(sem_t *sem);//try锁int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);//限时尝试对信号进行加锁int sem_post(sem_t *sem);//解锁,将信号量++,同时唤醒阻塞在信号量上的线程int sem_destroy(sem_t *sem);//销毁信号量

CAS

  • CAS是基于乐观锁的线程同步方式
  • CAS算法的作用:解决多线程条件下使用锁造成性能损耗问题的算法,保证了原子性,这个原子操作是由CPU来完成的
    CAS的原理:CAS算法有三个操作数,通过内存中的值(V)、预期原始值(A)、修改后的新值。
    (1)如果内存中的值和预期原始值相等, 就将修改后的新值保存到内存中。
    (2)如果内存中的值和预期原始值不相等,说明共享数据已经被修改,放弃已经所做的操作,然后重新执行刚才的操作,直到重试成功。
// 伪代码
template <class T>
bool CAS(T* addr, T expected, T target) 
{if (*addr == expected) {*addr = target;return true;}return false;
}

– 参考

https://www.cnblogs.com/Chlik/p/13556720.html
http://t.csdnimg.cn/GB6En
https://www.zhihu.com/question/485896579
https://zhuanlan.zhihu.com/p/400817892

http://www.yayakq.cn/news/443111/

相关文章:

  • 做外汇网站做什么类型网站好js 调用本地wordpress
  • 搜一搜站长工具网站中的人力资源建设
  • 建站资源带后台的网站开发运营成本
  • 做彩票网站合法吗深圳模板
  • 全世界做会展介绍的网站排名档案馆网站建设
  • php装饰公司网站源码泉州网站建设优化公司
  • 做网站用phpcms还是网络建设公司起名选字
  • 百度云注册域名可以做网站明码建设公司网站 优帮云
  • 中文网站做google广告怎么样网站手绘教程
  • 云南省住房和城乡建设厅官方网站个人能备案多少个网站
  • 网站建设公司电话销售无锡网站建设机构
  • 网站排名是什么意思网站服务器容器
  • 国内地铁建设公司网站电子印章制作生成免费
  • 深圳的网站建设公司哪家好手机版网站建设开发
  • 最常用的网站推广方式建设银行网站上不去
  • 建设厅职业资格中心网站常州的网站建设
  • 建站网站平台wordpress的标签设置主页
  • 企业网站怎么做才好深圳网站建设手机网站建设
  • 动态的网站大概多少钱wordpress 表单发邮件
  • apache添加网站民宿网站的建设
  • 搭建个人网站教程网站制作公司合肥
  • wordpress一步步建企业网站力杨网站建设
  • app推广方案模板福州网站优化公司
  • 网站底部的备案号百度口碑官网
  • 网站优化 秦皇岛wordpress用户名支持中文
  • 可以玩游戏的网站衣服网站建设规划书
  • 网站建设教育培训网站建设昆明包装设计
  • 清河网站建设设计费用网站建设费能抵扣吗
  • 宁海企业网站建设建设网站jw100
  • 本地网站做通用会员卡网站建设需申请注册域名