A working project for High-concurrency B-tree source code in C
-There are three major code sets in the btree source code:
+There are four major code sets in the standard btree source code:
btree2q.c Single Threaded/MultiProcess with latching supplied by advisory file locking. Works with network file systems.
-threads2h.c Multi-Threaded/Multi-Process with latching implemented with test & set locks in the btree pages.
-The Foster set includes three types of latching:
+threads2h.c Multi-Threaded/Multi-Process with latching implemented by a latch manager with pthreads/SRW latches in the first few btree pages.
-Fosterbtreee.c Multi-Threaded/Single Process with latches hosted by the buffer pool manager
-Fosterbtreef.c Multi-Threaded/Multi-Process with latches hosted by a latch manager using the first few pages of the btree.
-Fosterbtreeg.c Multi-Threaded/Multi-Process with latches implemented with test & set locks in the btree pages.
+threads2i.c Multi-Threaded/Multi-Process with latching implemented by a latch manager with test & set latches in the first few btree pages with thread yield system calls during contention.
+
+threads2j.c Multi-Threaded/Multi-Process with latching implemented by a latch manager with test & set locks in the first few btree pages with Linux futex system calls during contention.
+
+The Foster code set includes the same three types of latching:
+
+Fosterbtreee.c Multi-Threaded/Single Process with latching implemented by a latch manager with pthreads/SRW latches in the first few btree pages.
+
+Fosterbtreef.c Multi-Threaded/Multi-Process with latching implemented by a latch manager with test & set latches in the first few btree pages with thread yield system calls during contention.
+
+Fosterbtreeg.c Multi-Threaded/Multi-Process with latching implemented by a latch manager with test & set locks in the first few btree pages with Linux futex system calls during contention.
Compilation is achieved on linux or Windows by:
or
-cl /D STANDALONE threads2h.c
+cl /Ox /D STANDALONE threads2h.c
Please see the project wiki page for documentation