2018年5月22日

[转] MySQL索引原理

摘要: MySQL索引原理 B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B- 阅读全文

posted @ 2018-05-22 10:27 DeeperMiner 阅读(110) 评论(0) 推荐(0) 编辑

2018年5月20日

[.net 多线程]SpinWait

摘要: 《CLR via C#》读书笔记-线程同步(四) 混合线程同步构造简介 之前有用户模式构造和内核模式构造,前者快速,但耗费CPU;后者可以阻塞线程,但耗时、耗资源。因此.NET会有一些混合了两者的构造,《CLR via C#》的作者给这些构造起了一个别名:混合线程同步构造(Hybrid Thread 阅读全文

posted @ 2018-05-20 17:56 DeeperMiner 阅读(357) 评论(0) 推荐(0) 编辑

2018年5月17日

[.net 多线程 ]ReaderWriterLock

摘要: ReaderWriterLock 用于同步对资源的访问。在任一特定时刻,它允许多个线程同时进行读访问,或者允许单个线程进行写访问。在资源不经常发生更改的情况下,ReaderWriterLock 所提供的吞吐量比简单的一次只允许一个线程的锁(如 Monitor)更高。 在多数访问为读访问,而写访问频率 阅读全文

posted @ 2018-05-17 23:10 DeeperMiner 阅读(283) 评论(0) 推荐(0) 编辑

[.net 多线程]Barrier

摘要: 当需要【一组任务】并行地运行一连串的阶段,但是每一个阶段都要等待所有他任务完成前一阶段之后才能开始,可以通过Barrier实例来同步这一类协同工作。Barrier初始化后,将等待特定数量的信号到来,这个数量在Barrier初始化时指定,在所指定的信号个数已经到来后,Barrier将执行一个指定的动作 阅读全文

posted @ 2018-05-17 22:10 DeeperMiner 阅读(224) 评论(0) 推荐(0) 编辑

[.net 多线程]CountdownEvent

摘要: System.Threading.CountdownEvent 是一个同步基元,它在收到一定次数的信号之后,将会解除对其等待线程的锁定。CountdownEvent在初始化时有一个初始计数量,在每个工作项在完成时调用 Signal。每次调用Signal 时,信号计数都会递减 1。 在主线程上,对 W 阅读全文

posted @ 2018-05-17 21:44 DeeperMiner 阅读(112) 评论(0) 推荐(0) 编辑

2018年5月8日

[.net 多线程]AutoResetEvent, ManualResetEvent

摘要: ManualResetEvent: 通知一个或多个正在等待的线程已发生事件,允许线程通过发信号互相通信,来控制线程是否可心访问资源。 Set() : 用于向 ManualResetEvent 发送信号,使其取消阻塞状态(唤醒进程)或者开始阻塞进程,这基于 ManualResetEvent 的初始状态 阅读全文

posted @ 2018-05-08 23:05 DeeperMiner 阅读(226) 评论(0) 推荐(0) 编辑

2018年5月7日

[.net 多线程]Semaphore信号量

摘要: 信号量(Semaphore)是一种CLR中的内核同步对象。与标准的排他锁对象(Monitor,Mutex,SpinLock)不同的是,它不是一个排他的锁对象,它与SemaphoreSlim,ReaderWriteLock等一样允许多个有限的线程同时访问共享内存资源。Semaphore就好像一个栅栏, 阅读全文

posted @ 2018-05-07 23:20 DeeperMiner 阅读(306) 评论(0) 推荐(0) 编辑

2018年5月6日

[.net 多线程]Mutex

摘要: Mutex是可以进程间同步的同步基元。 使用默认属性初始化 Mutex 类的新实例。 使用默认属性初始化 Mutex 类的新实例。 使用 Boolean 值(指示调用线程是否应具有互斥体的初始所有权)初始化 Mutex 类的新实例。 使用 Boolean 值(指示调用线程是否应具有互斥体的初始所有权 阅读全文

posted @ 2018-05-06 16:39 DeeperMiner 阅读(1172) 评论(0) 推荐(0) 编辑

[.net 多线程]volatile 摘录

摘要: 一、volatile 介绍 volatile 关键字指示一个字段可以由多个同时执行的线程修改。 声明为 volatile 的字段不受编译器优化(假定由单个线程访问)的限制。 这样可以确保该字段在任何时间呈现的都是最新的值。 volatile 修饰符通常用于由多个线程访问但不使用 lock 语句对访问 阅读全文

posted @ 2018-05-06 15:29 DeeperMiner 阅读(217) 评论(0) 推荐(0) 编辑

[.net 多线程] Interlocked实现CAS操作

摘要: Interlocked:为多个线程共享的变量提供原子操作。 实现原子级运算 1 int increament = 0; 2 Thread th1 = new Thread(() => 3 { 4 for (int i = 0; i < 10; i++) 5 Console.WriteLine($"t 阅读全文

posted @ 2018-05-06 14:23 DeeperMiner 阅读(254) 评论(0) 推荐(0) 编辑

导航