Index: tests/concurrent/.expect/clib_tls.txt
===================================================================
--- tests/concurrent/.expect/clib_tls.txt	(revision 11054ebabd4e6fc888222295c6cc3ff8811ba9fa)
+++ tests/concurrent/.expect/clib_tls.txt	(revision 11054ebabd4e6fc888222295c6cc3ff8811ba9fa)
@@ -0,0 +1,12 @@
+Local Init
+Local Init
+Local Init
+Local Init
+Starting Checkers
+Done
+Done
+Done
+Done
+Done
+Done
+Done
Index: tests/concurrent/clib.c
===================================================================
--- tests/concurrent/clib.c	(revision e0c072c3bbbe8115f3120141f3503d077cada4be)
+++ tests/concurrent/clib.c	(revision 11054ebabd4e6fc888222295c6cc3ff8811ba9fa)
@@ -62,10 +62,15 @@
 	cfathread_cluster_add_worker( cl, NULL, NULL, NULL );
 	cfathread_cluster_add_worker( cl, NULL, NULL, NULL );
+
+	cfathread_attr_t attr;
+	cfathread_attr_init(&attr);
+	cfathread_attr_setcluster(&attr, cl);
+
 	cfathread_t u;
-	cfathread_create( &u, NULL, Unparker, NULL );
+	cfathread_create( &u, &attr, Unparker, NULL );
 	{
 		cfathread_t t[20];
 		for(int i = 0; i < 20; i++) {
-			cfathread_create( &t[i], NULL, Worker, NULL );
+			cfathread_create( &t[i], &attr, Worker, NULL );
 		}
 		for(int i = 0; i < 20; i++) {
@@ -75,4 +80,5 @@
 	stop = true;
 	cfathread_join(u, NULL);
+	cfathread_attr_destroy(&attr);
 	fflush(stdout);
 	_exit(0);
Index: tests/concurrent/clib_tls.c
===================================================================
--- tests/concurrent/clib_tls.c	(revision 11054ebabd4e6fc888222295c6cc3ff8811ba9fa)
+++ tests/concurrent/clib_tls.c	(revision 11054ebabd4e6fc888222295c6cc3ff8811ba9fa)
@@ -0,0 +1,52 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <clib/cfathread.h>
+#include <bits/defs.hfa>
+
+extern "C" {
+void _exit(int status);
+}
+
+thread_local int checkval = 0xBAADF00D;
+
+void init(void * ) {
+	printf("Local Init\n");
+	checkval = 0xFEEDFACE;
+}
+
+void * checker( void * ) {
+	for(int i = 0; i < 50; i++) {
+		if(checkval != 0xFeedFace) {
+			printf("Bad Food!\n");
+		}
+		cfathread_yield();
+	}
+	printf("Done\n");
+	return NULL;
+}
+
+int main() {
+	init(NULL);
+	cfathread_cluster_t cl = cfathread_cluster_self();
+
+	cfathread_cluster_add_worker( cl, NULL, init, NULL );
+	cfathread_cluster_add_worker( cl, NULL, init, NULL );
+	cfathread_cluster_add_worker( cl, NULL, init, NULL );
+
+	cfathread_attr_t attr;
+	cfathread_attr_init(&attr);
+	cfathread_attr_setcluster(&attr, cl);
+	{
+		printf("Starting Checkers\n");
+		cfathread_t t[7];
+		for(int i = 0; i < 7; i++) {
+			cfathread_create( &t[i], &attr, checker, NULL );
+		}
+		for(int i = 0; i < 7; i++) {
+			cfathread_join( t[i], NULL );
+		}
+	}
+	cfathread_attr_destroy(&attr);
+	fflush(stdout);
+	_exit(0);
+}
