Notes on Lock Free Programming (Part 1)

With the advent of multi-core architectures, it is becoming increasingly important to build scalable data structures that support the basic operations (insert, search) without taking coarse grained locks. Coarse grained locks are usually taken on the entire data structure and prevent any other concurrent thread(s) from operating even on other disjoint/orthogonal parts of the data... Continue Reading →


Use of Associativity in Hashing

In this short post, I will talk about the concept of Associativity in Hashing. This is a fairly well known method so the article might be an old hat for some readers. When implementing a collision resolution strategy for our hash table design, there are usually two directions that we take: Chaining - There is... Continue Reading →

Clustered Indexes v/s Non-Clustered Indexes

In this post, I would like to give a small overview of Clustered and Non-Clustered Indexes. DISCLAIMER: I am an Oracle employee, and the views/opinions expressed in the below article are purely my own and do not express the views of my employer. Let's start with similarities: Similarities: Both Clustered and Non-Clustered indexes are types... Continue Reading →

Linear Hashing

In this blog post, I will give an introduction to a hashing methodology called Linear Hashing. Hash Table Detour A hash table is a well known in-memory structure that supports key-value access with lookup cost being amortized O(1). The hash table is just an array, and each location/index in the array stores a <KEY,VALUE> item.... Continue Reading →

Priority Queue Implementation in C

#include<stdio.h> typedef struct queue { int data; int priority; struct queue *next; } queue; queue *front; queue *rear; void init() { front = NULL; rear = NULL; } void enqueue(int x,int priority) { queue *new; new = (queue*)malloc(sizeof(queue)); new->data = x; new->priority = priority; new->next = NULL; if(front == NULL) { front = new; rear... Continue Reading →

Create a free website or blog at

Up ↑

%d bloggers like this: