Index: libcfa/src/concurrency/io/setup.cfa
===================================================================
--- libcfa/src/concurrency/io/setup.cfa	(revision 49981556d70010c36f072dc3534ff01415259a87)
+++ libcfa/src/concurrency/io/setup.cfa	(revision 2fafe7eaade023aeffc0c15a4090d21980e65706)
@@ -378,5 +378,5 @@
 		}
 
-		(sq.lock){};
+		(sq.submit_lock){};
 		(sq.release_lock){};
 
Index: libcfa/src/concurrency/io/types.hfa
===================================================================
--- libcfa/src/concurrency/io/types.hfa	(revision 49981556d70010c36f072dc3534ff01415259a87)
+++ libcfa/src/concurrency/io/types.hfa	(revision 2fafe7eaade023aeffc0c15a4090d21980e65706)
@@ -22,4 +22,11 @@
 
       #include "bits/locks.hfa"
+
+	#define LEADER_LOCK
+	struct __leaderlock_t {
+		struct $thread * volatile value;	// ($thread) next_leader | (bool:1) is_locked
+	};
+
+	static inline void ?{}( __leaderlock_t & this ) { this.value = 0p; }
 
 	//-----------------------------------------------------------------------
@@ -49,6 +56,10 @@
 		__u32 ready_cnt;
 
-		__spinlock_t lock;
-		__spinlock_t release_lock;
+		#if defined(LEADER_LOCK)
+			__leaderlock_t submit_lock;
+		#else
+			__spinlock_t submit_lock;
+		#endif
+		__spinlock_t  release_lock;
 
 		// A buffer of sqes (not the actual ring)
