Today's Question:  What does your personal desk look like?        GIVE A SHOUT

 ALL


  Smuggling data in pointers

While reading up on The ABA Problem I came across a fantastic hack.  The ABA problem, in a nutshell, results from the inability to atomically access both a pointer and a "marked" bit at the same time (read the wikipedia page).  One fun, but very hackish solution is to "smuggle" data in a pointer.  Example:#include "stdio.h"void * smuggle(void * ptr, int value){  return (void *)( (long long)ptr | (value & 3) );}int recoverData(void * ptr){  return (long long)ptr & 3;}void * recoverPointer(void * ptr){  return (void *)( (long long)ptr & (~3) );}int main(...

3,042 0       C DATA POINTER BIT ATOMIC SMUGGLE