#include #include #include #define Scale (100000000000ull) /* * waste time */ vlong πjj(uint j) { vlong v; v = 4*Scale / (2*j + 1); if(j&1) return -v; return v; } vlong π(void) { uint i; vlong v; v = 0; for(i = 0; i < 500000000; i++) v += πjj(i); return v; } void p(void *v) { int i; i = (int)v; print("%d: %lld\n", i, π()); threadexits(""); } void usage(void) { fprint(2, "usage: burncycles nthread\n"); threadexits("usage"); } void threadmain(int argc, char **argv) { int n, i; ARGBEGIN{ default: usage(); }ARGEND n = 0; if(argc == 0) n = 1; else if(argc != 1 || (n = atoi(argv[0])) <= 0) usage(); for(i = 0; i < n-1; i++) proccreate(p, (void*)i, 4096); p((void*)i); }