Alternate design for removing the GIL

This depends on undefined behaviour of the C language.
The Linux kernel code goes to great lengths to stop the compiler splitting the reads into multiple instructions.