diff --git a/vlib/sync/thread_default.c.v b/vlib/sync/thread_default.c.v new file mode 100644 index 0000000000..74d6d517cd --- /dev/null +++ b/vlib/sync/thread_default.c.v @@ -0,0 +1,7 @@ +module sync + +fn C.pthread_self() usize + +pub fn thread_id() u64 { + return u64(C.pthread_self()) +} diff --git a/vlib/sync/thread_test.v b/vlib/sync/thread_test.v new file mode 100644 index 0000000000..797d7e9ea6 --- /dev/null +++ b/vlib/sync/thread_test.v @@ -0,0 +1,22 @@ +import sync + +fn simple_thread() u64 { + tid := sync.thread_id() + eprintln('simple_thread thread_id: $tid.hex()') + return tid +} + +fn test_sync_thread_id() { + mtid := sync.thread_id() + eprintln('main thread_id: $sync.thread_id().hex()') + x := go simple_thread() + y := go simple_thread() + xtid := x.wait() + ytid := y.wait() + eprintln('main thread_id: $sync.thread_id().hex()') + dump(xtid.hex()) + dump(ytid.hex()) + assert mtid != xtid + assert mtid != ytid + assert xtid != ytid +} diff --git a/vlib/sync/thread_windows.c.v b/vlib/sync/thread_windows.c.v new file mode 100644 index 0000000000..33241d5a0f --- /dev/null +++ b/vlib/sync/thread_windows.c.v @@ -0,0 +1,7 @@ +module sync + +fn C.GetCurrentThreadId() u32 + +pub fn thread_id() u64 { + return u64(C.GetCurrentThreadId()) +}