Writing Lock-Free Code: A Corrected Queue Think in transactions, know who owns what, and use ordered atomic variables