innoDB的事务,是基于锁来实现的,用到事务不自然就会用到锁,而如果对锁理解的不通透,很容易造成线上问题。 数据库加锁的分析,和事务的引擎,隔离级别,索引,主键索引都有关系, 如果去考虑引擎和各种隔离级别的话,就会很复杂了,所以下面都是基于innoDB和RR的隔离级别进行分析: 表结构: 内容: ...
分类:
数据库 时间:
2018-11-21 16:11:27
阅读次数:
116
上次博客讲到了通过wait()方法和notify()方法来实现循环打印数字和字母得问题。其实使用重入锁也可以实现同样得功能,那么开始我们先通过源码来了解一下重入锁把。 首先它有一个lock()方法,它用来加锁,从代码中可以看到,它调用得是sync.lock()方法, 在这个类里面,有一个静态抽象类S ...
分类:
其他好文 时间:
2018-11-21 00:46:14
阅读次数:
182
进程: 进程就是一组资源的集合 线程是在进程里面干活的 一个进程里面至少有一个线程,这个线程就是主线程 电脑CPU是几核的就只能同时运行几个任务(线程) python里面的多线程其实只能用一个核 GIL 全局解释器锁 锁:多线程同时操作同一数据时必须加锁 CPU密集型任务 (CPU干活) 多进程 I ...
分类:
编程语言 时间:
2018-11-18 16:38:18
阅读次数:
144
一、协程的介绍 协程:是单线程下的并发,一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。 对比操作系统控制线程的切换,用户在单线程内控制协程的切换 优点: 缺点: 总结协程特点: 1、必须在只有一个单线程里实现并发 2、修改共享数据不需加锁 3、用户程序里自己保 ...
分类:
其他好文 时间:
2018-11-18 15:06:48
阅读次数:
155
双重锁定:不用让线程每次都加锁,而只是在实例未被创建的时候再加锁处理,提高了性能。 ...
分类:
编程语言 时间:
2018-11-18 11:38:06
阅读次数:
125
本次的标题是我在写单例模式的博客时遇到的问题,所以今天专门写了的demo让自己记住怎么简单的使用多线程。 一直纠结的是怎么在for循环中多次实例化对象,好复现单例模式在没有加锁的情况下出现多个实例对象的错误。 先给大家看一下我简单实现的多线程实例对象。 方案一: Demo.cs Program.cs ...
分类:
编程语言 时间:
2018-11-18 11:22:42
阅读次数:
191
1、两者的缓存机制不同:printf无缓冲区,而std::cout有 2、对于标准输出的加锁时机不同:printf在对标准输出作任何处理前先加锁;std::out在实际向标准输出打印时才加锁 3、二者存在微弱的时序差别,而在多线程环境下,很多问题就是由于微弱的时序差别造成的。所以两者混用很容易带来不 ...
分类:
其他好文 时间:
2018-11-17 19:21:46
阅读次数:
267
Mysql中有哪几种锁? 1.表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 2.行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 3.页面锁:开销和加锁时尚界于表锁和行锁之间,并发度一般。 mysql中有哪些不同的表格? ...
分类:
数据库 时间:
2018-11-17 10:30:17
阅读次数:
478
概述 NSThread类是一个继承NSObjct类的个轻量级的类。但需要管理线程的生命周期、同步、加锁等问题,这会导致一定的性能开销。 使用NSThread类可以让某个OC方法在特定的线程中被调用。当需要执行一个冗长的任务,并且不想让这个任务阻塞应用中的其他部分,尤其为了避免不阻塞app的主线程(因 ...
分类:
其他好文 时间:
2018-11-15 18:25:48
阅读次数:
202