自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 资源 (4)
  • 收藏
  • 关注

原创 SQLite3源码学习(18) 互斥锁

互斥锁是为了保证在多线程时一些不可重入函数执行的串行化,有些函数如malloc等会操作一些共享数据,如果被重入了就会导致共享资源被破坏,从而出现逻辑错误,所以如果有多个线程对共享资源的访问就要加互斥锁。互斥锁部分的代码还是比较简单的,代码实现在mutex.c、mutex_w32.c、mutex_unix.c和mutex_noop.c这几个文件里,另外还有一个test_mutex.c文件做mutex...

2018-04-30 23:08:54 1643

原创 SQLite3源码学习(25) Pager模块之事务锁的实现2

在上一篇文章中介绍了SQLite怎么用Linux中的记录锁来实现每一种类型的事务锁。但这只适合多进程间的互斥,不适合多线程,在Linux中每一个进程只能拥有一把锁,也就是说一个进程里的多个线程共用一把锁,这时会出现一个线程拥有共享锁,另一个线程再获取独占锁时并不会出现排斥,仅仅是把当前进程的锁改为独占锁,还有当一个线程占有锁的时候可能被另一个线程释放等等,这就破坏了数据库中多事务的隔离性。所以SQ...

2018-04-28 14:39:19 378

原创 SQLite3源码学习(24) Pager模块之事务锁的实现1

   如果对SQLite事务的概念完全陌生,建议先阅读以下这篇文章来熟悉相关基础概念。SQLite的原子提交原理https://blog.csdn.net/javensun/article/details/8515690 SQLite支持多路并发的事务处理,这就需要一种机制来隔离一个事务相对于其他事务的影响。为了保证事务的隔离性,那么在并发的环境下,对于写数据库的操作就要串行化。而事务锁就是用来解...

2018-04-26 21:55:02 527

原创 SQLite3源码学习(23) 链表的归并排序

一般数组排序采用快速排序最佳,但是在链表中2个元素的交换不是很方便,所以采用归并排序比较好,先把链表分割成一些已经排好序的子链表,最后再串起来就好了。在SQLite中对于脏页链表按照页号重新排序采用的就是归并排序。1.基本思路      子链表存放在一个临时数组里,这个数组定义为PgHdr *a[N_SORT_BUCKET]子链表是按照2的幂次方的大小依次存放,也就是说a[0]存放1个元素,a[1...

2018-04-08 23:48:36 360

原创 SQLite3源码学习(22) Page Cache分析

上一篇学习了pcache1的机制,这是pagecache管理的一个插件,在这基础上又封装了一层,主要是用来处理脏页(就是修改过的缓存页),如脏页的添加删除和回收利用等,这部分代码的实现在pcache.c里。1.数据结构在pcache中,通过PCache结构对象作为连接句柄,每个缓存页通过PgHdr来表示。在pagecache中,所有的脏页通过一个双向链表来连接在一起,其结构关系如下图所示:    ...

2018-04-08 22:00:16 832

原创 SQLite3源码学习(21) pcache1分析

学习本章之前要先复习以下2篇文章: SQLite3源码学习(9)Page Cache概述 SQLite3源码学习(10)testpcache分析 之前讲到page cache是一种可插入式的管理方式,在sqlite3GlobalConfig.pcache2里定义了对page cache管理的一系列方法接口,之前我们讲了最简单的一种接口testpcache,现在我们来分析一下默认的接口pach

2018-04-03 11:32:15 1110

sqlite3的函数执行过程跟踪

对sqlite3的函数执行过程记录,针对数据库的创建,新建表,插入数据,读取数据等操作的追踪,分别使用ftrace和uftrace生成的报告

2018-02-22

sqlite3的tcl扩展源码eclipse工程

sqlite3的tcl扩展,这个是eclipse工程,已经编译通过。

2017-11-24

这份资源不对,建议删除

sqlite3的tcl扩展,这个是eclipse工程,已经编译通过。

2017-11-24

sqlite3编译通过的多文件eclipse工程

sqlite3源码的编译一般都是很多个文件合成一个文件,现在把官方多文件的源码整理成可编译的eclipse工程,使用tdm-gcc编译器器

2017-11-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除