TransactionKit is a work in progress and highly experimental. Multithreading programming is extremely error prone, and TransactionKit uses an even riskier lockless approach.

TransactionKit is a C library that provides key / value based hash tables and was designed to fill the gap between simple, lightweight key / value type primitives and the more advanced features available in heavyweight databases.

Multithreading programming often requires many of the qualities that database transactions provide but could do without all the extra overhead associated with using a full featured database. Programs often need to share data among threads that is short lived and transitory in nature, rarely extending beyond a programs execution lifetime. TransactionKit fills that need, providing database like transactions for simple key / value pairs of data.

The design of TransactionKit is completely lockless and only requires commonly available atomic primitives, such as single word Compare and Swap.

Some of the advanced features available are:

Objective-C Support
Mac OS X Cocoa users can use the included NSMutableDictionary subclassed object that provides access to TransactionKits advanced features.
  • Designed for multi-threaded use.
  • Lockless access to the hash table for both readers and writers.
  • Transactional access with begin / commit / rollback semantics.
  • Uses multi-version concurrency control, or MVCC, to record access and mutations to the hash table.

Because TransactionKit is completely lockless, this eliminates many of the problems and complexity assosciated with multithreading programming. Accessing a TransactionKit hash table can never result in a deadlock.


Version 0.2 of TransactionKit released. Significant bug fixes and stability improvements.

The first publicly available version of TransactionKit released.

TransactionKit source tarball.
TransactionKit source tarball.