brintos

brintos / llvm-project-archived public Read only

0
0
Text · 611 B · 9a51b21 Raw
31 lines · cpp
1#include "pseudo_barrier.h"2#include <cstdlib>3#include <thread>4 5// Use low-level exit functions to achieve predictable timing.6#if defined(__linux__)7#include <sys/syscall.h>8#include <unistd.h>9 10void exit_thread(int status) { syscall(SYS_exit, status); }11void exit_process(int status) { syscall(SYS_exit_group, status); }12#else13#error Unimplemented14#endif15 16pseudo_barrier_t g_barrier;17 18void thread_func() {19  pseudo_barrier_wait(g_barrier);20  exit_thread(42);21}22 23int main() {24  pseudo_barrier_init(g_barrier, 2);25  std::thread(thread_func).detach();26 27  pseudo_barrier_wait(g_barrier);28 29  exit_process(47);30}31