Commit Diff


commit - e767dd493091d95e9fed07c927d7ececd93b47ca
commit + 8af7f5d093773b6a780a4ccfcee04791c221d81a
blob - /dev/null
blob + 6f8adcd5087fadf08f2e8a34e60de4d9fa1bff2e (mode 644)
--- /dev/null
+++ src/libthread/trend.c
@@ -0,0 +1,31 @@
+#include <lib9.h>
+#include <thread.h>
+
+Channel *c[3];
+
+
+void
+pingpong(void *v)
+{
+	int n;
+	Channel **c;
+
+	c = v;
+	do{
+		n = recvul(c[0]);
+		sendul(c[1], n-1);
+	}while(n > 0);
+	exit(0);
+}
+
+void
+threadmain(int argc, char **argv)
+{
+	c[0] = chancreate(sizeof(ulong), 1);
+	c[1] = chancreate(sizeof(ulong), 1);
+	c[2] = c[0];
+
+	threadcreate(pingpong, c, 16384);
+	threadcreate(pingpong, c+1, 16384);
+	sendul(c[0], atoi(argv[1]));
+}