Index: src/libcfa/concurrency/monitor
===================================================================
--- src/libcfa/concurrency/monitor	(revision ead8c7e2a0589916d2a0faeb5525f3255cf94858)
+++ src/libcfa/concurrency/monitor	(revision 23c4aa8a79dd6a49de0ab8baf180f826b49f0613)
@@ -30,3 +30,16 @@
 void leave(monitor *);
 
+struct monitor_guard {
+	monitor * m;
+};
+
+static inline void ?{}( monitor_guard * this, monitor * m ) {
+	this->m = m;
+	enter( this->m );
+}
+
+static inline void ^?{}( monitor_guard * this ) {
+	leave( this->m );
+}
+
 #endif //MONITOR_H
Index: src/libcfa/concurrency/monitor.c
===================================================================
--- src/libcfa/concurrency/monitor.c	(revision ead8c7e2a0589916d2a0faeb5525f3255cf94858)
+++ src/libcfa/concurrency/monitor.c	(revision 23c4aa8a79dd6a49de0ab8baf180f826b49f0613)
@@ -44,4 +44,5 @@
 
 	unlock( &this->lock );
+
 	if( this->holder ) ScheduleThread( this->holder );
 }
