#include #include #include #include #include #include void do_sleep(double msecs) { double t1 = emscripten_get_now(); emscripten_thread_sleep(msecs); double t2 = emscripten_get_now(); emscripten_outf("emscripten_thread_sleep() slept for %f msecs.\n", t2 - t1); assert(t2 - t1 >= 0.9 * msecs); // Should have slept ~ the requested time. } void* thread_main(void* arg) { emscripten_out("hello from thread!"); do_sleep(1); do_sleep(10); do_sleep(100); do_sleep(1000); do_sleep(5000); emscripten_force_exit(0); return NULL; } int main() { // Bad bad bad to sleep on the main thread, but test that it works. do_sleep(1); do_sleep(10); do_sleep(100); do_sleep(1000); do_sleep(5000); pthread_t thread; pthread_create(&thread, NULL, thread_main, NULL); emscripten_exit_with_live_runtime(); __builtin_trap(); }