Index: src/benchmark/Monitor.c
===================================================================
--- src/benchmark/Monitor.c	(revision 8cb6fcd6c8663c5ae90011e301c2643273bf876d)
+++ src/benchmark/Monitor.c	(revision e0b8ccd507fd6f9deca073c6ae833b591286ccc3)
@@ -9,10 +9,17 @@
 mon_t mon1, mon2;
 
+void dummy( mon_t * mutex a ) {}
 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 );
+	}
+	EndTime = Time();
+
+	sout | ( EndTime - StartTime ) / N;
 
 	StartTime = Time();
Index: src/benchmark/SchedInt.c
===================================================================
--- src/benchmark/SchedInt.c	(revision 8cb6fcd6c8663c5ae90011e301c2643273bf876d)
+++ src/benchmark/SchedInt.c	(revision e0b8ccd507fd6f9deca073c6ae833b591286ccc3)
@@ -7,4 +7,6 @@
 condition condA; 
 condition condB;
+condition condC;
+condition condD;
 
 monitor mon_t {};
@@ -14,6 +16,10 @@
 thread thrdA {};
 thread thrdB {};
+thread thrdC {};
+thread thrdD {};
 
-void sideA( mon_t * mutex a, mon_t * mutex b ) {
+//-------------------------------------------------------------------
+// 1 monitor signal cycle
+void sideA( mon_t * mutex a ) {
 	long long int StartTime, EndTime;
 
@@ -26,8 +32,8 @@
 	EndTime = Time();
 
-	sout | ( EndTime - StartTime ) / N | endl;
+	sout | ( EndTime - StartTime ) / N;
 }
 
-void sideB( mon_t * mutex a, mon_t * mutex b ) {
+void sideB( mon_t * mutex a ) {
 	for( int i = 0;; i++ ) {
 		signal(&condB);
@@ -37,9 +43,41 @@
 }
 
-void main( thrdA * this ) { sideA( &mon1, &mon2 ); }
-void main( thrdB * this ) { sideB( &mon1, &mon2 ); }
+//-------------------------------------------------------------------
+// 2 monitor signal cycle
+void sideC( mon_t * mutex a, mon_t * mutex b ) {
+	long long int StartTime, EndTime;
+
+	StartTime = Time();
+	for( int i = 0;; i++ ) {
+		signal(&condC);
+		if( i > N ) break;
+		wait(&condD);
+	}
+	EndTime = Time();
+
+	sout | ( EndTime - StartTime ) / N | endl;
+}
+
+void sideD( mon_t * mutex a, mon_t * mutex b ) {
+	for( int i = 0;; i++ ) {
+		signal(&condD);
+		if( i > N ) break;
+		wait(&condC);
+	}
+}
+
+void main( thrdA * this ) { sideA( &mon1 ); }
+void main( thrdB * this ) { sideB( &mon1 ); }
+void main( thrdC * this ) { sideC( &mon1, &mon2 ); }
+void main( thrdD * this ) { sideD( &mon1, &mon2 ); }
 
 int main() {
-	thrdA a;
-	thrdB b;
+	{
+		thrdA a;
+		thrdB b;
+	}
+	{
+		thrdC c;
+		thrdD d;
+	}
 }
