Index: src/benchmark/ctxswitch/cfa_cor.c
===================================================================
--- src/benchmark/ctxswitch/cfa_cor.c	(revision 034165a8640dca94275d38852f1ba492194b3900)
+++ src/benchmark/ctxswitch/cfa_cor.c	(revision 034165a8640dca94275d38852f1ba492194b3900)
@@ -0,0 +1,35 @@
+#include <fstream>
+#include <stdlib>
+#include <thread>
+
+#include "bench.h"
+
+coroutine GreatSuspender {};
+
+void ?{}( GreatSuspender & this ) {
+	prime(this);
+}
+
+void main( GreatSuspender & this )
+{
+	while( true ) {
+		suspend();
+	}
+}
+
+void resumer( GreatSuspender & this, const unsigned int NoOfTimes ) {
+	for ( volatile unsigned int i = 0; i < NoOfTimes; i += 1 ) {
+		resume( this );
+	}
+}
+
+int main(int argc, char* argv[]) {
+	GreatSuspender s;
+
+	BENCH(
+		resumer( s, NoOfTimes );,
+		result
+	)
+
+	sout | result | endl;
+}
Index: src/benchmark/ctxswitch/cfa_thrd.c
===================================================================
--- src/benchmark/ctxswitch/cfa_thrd.c	(revision 034165a8640dca94275d38852f1ba492194b3900)
+++ src/benchmark/ctxswitch/cfa_thrd.c	(revision 034165a8640dca94275d38852f1ba492194b3900)
@@ -0,0 +1,18 @@
+#include <fstream>
+#include <stdlib>
+#include <thread>
+
+#include "bench.h"
+
+int main() {
+	const unsigned int NoOfTimes = N;
+	long long int StartTime, EndTime;
+
+	StartTime = Time();
+	for ( volatile unsigned int i = 0; i < NoOfTimes; i += 1 ) {
+		yield();
+	}
+	EndTime = Time();
+
+	sout | ( EndTime - StartTime ) / NoOfTimes | endl;
+}
Index: src/benchmark/ctxswitch/pthreads.c
===================================================================
--- src/benchmark/ctxswitch/pthreads.c	(revision 034165a8640dca94275d38852f1ba492194b3900)
+++ src/benchmark/ctxswitch/pthreads.c	(revision 034165a8640dca94275d38852f1ba492194b3900)
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sched.h>
+
+#include "bench.h"
+
+int main() {
+	const unsigned int NoOfTimes = N;
+	long long int StartTime, EndTime;
+
+	StartTime = Time();
+	for ( volatile unsigned int i = 0; i < NoOfTimes; i += 1 ) {
+		sched_yield();
+	}
+	EndTime = Time();
+
+	printf("%lld\n", ( EndTime - StartTime ) / NoOfTimes );
+}
