Index: src/benchmark/Makefile.am
===================================================================
--- src/benchmark/Makefile.am	(revision 9737ffeba379a793d918a4f50f36c0869f7e64ff)
+++ src/benchmark/Makefile.am	(revision 29137d3a649bfcc5cdde5a1d7d6e2daeed39a49d)
@@ -51,4 +51,11 @@
 	@rm -f ./a.out
 
+monitor:
+	${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -nodebug -lrt -DN=10000000 Monitor.c
+	@for number in 1 2 3 4 5 6 7 8 9 10; do \
+                ./a.out ; \
+        done
+	@rm -f ./a.out
+
 csv-data:
 	@${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -nodebug -lrt -quiet -DN=10000000 csv-data.c
Index: src/benchmark/Makefile.in
===================================================================
--- src/benchmark/Makefile.in	(revision 9737ffeba379a793d918a4f50f36c0869f7e64ff)
+++ src/benchmark/Makefile.in	(revision 29137d3a649bfcc5cdde5a1d7d6e2daeed39a49d)
@@ -499,4 +499,11 @@
 	@rm -f ./a.out
 
+monitor:
+	${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -nodebug -lrt -DN=10000000 Monitor.c
+	@for number in 1 2 3 4 5 6 7 8 9 10; do \
+                ./a.out ; \
+        done
+	@rm -f ./a.out
+
 csv-data:
 	@${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -nodebug -lrt -quiet -DN=10000000 csv-data.c
Index: src/benchmark/Monitor.c
===================================================================
--- src/benchmark/Monitor.c	(revision 29137d3a649bfcc5cdde5a1d7d6e2daeed39a49d)
+++ src/benchmark/Monitor.c	(revision 29137d3a649bfcc5cdde5a1d7d6e2daeed39a49d)
@@ -0,0 +1,47 @@
+#include <fstream>
+#include <stdlib>
+#include <thread>
+
+#include <unistd.h>					// sysconf
+#include <sys/times.h>					// times
+#include <time.h>
+
+inline unsigned long long int Time() {
+    timespec ts;
+    clock_gettime(
+#if defined( __linux__ )
+	 CLOCK_THREAD_CPUTIME_ID,
+#elif defined( __freebsd__ )
+	 CLOCK_PROF,
+#elif defined( __solaris__ )
+	 CLOCK_HIGHRES,
+#else
+    #error uC++ : internal error, unsupported architecture
+#endif
+	 &ts );
+    return 1000000000LL * ts.tv_sec + ts.tv_nsec;
+} // Time
+
+#ifndef N
+#define N 10000000
+#endif
+
+monitor mon_t {};
+
+mon_t mon1, mon2;
+
+void dummy( mon_t * mutex a, mon_t * mutex b ) {}
+
+
+
+int main() {
+	long long int StartTime, EndTime;
+
+	StartTime = Time();
+	for( int i = 0; i < N; i++ ) {
+		dummy( &mon1, &mon2 );
+	}
+	EndTime = Time();
+
+	sout | ( EndTime - StartTime ) / N | endl;
+}
