blob: cec85f1972da54cec03a5e2c8ef561ac892d05e1 [file]
#include <emscripten.h>
#include <emscripten/wasm_worker.h>
#include <emscripten/console.h>
#include <stdlib.h>
#include <stdio.h>
_Atomic int running_threads = 0;
static void malloc_loop() {
// Busy loop here until both threads are up running
running_threads += 1;
while (running_threads != 2) {}
for (int i = 0; i < 1000000; ++i) {
free(malloc(1));
}
}
static void worker_callback(void) {
emscripten_outf("worker_callback");
malloc_loop();
}
static void main_callback(void* arg) {
emscripten_outf("main_callback");
malloc_loop();
emscripten_outf("done");
emscripten_terminate_all_wasm_workers();
}
int main() {
emscripten_outf("main");
emscripten_wasm_worker_post_function_v(emscripten_malloc_wasm_worker(1024 * 1024), worker_callback);
emscripten_async_call(main_callback, NULL, 0);
return 0;
}