Compile using blc my-file-name.bl
and run ./out
.
#import "std/thread"
#import "std/sync"
mutex: std.Mutex;
main :: fn () s32 {
print("Start thread!!!\n");
defer print("Threads joined!!!\n");
std.mutex_init(&mutex);
defer std.mutex_terminate(&mutex);
t1 :: std.thread_create(&first);
t2 :: std.thread_create(&second);
std.thread_join(t1);
std.thread_join(t2);
return 0;
}
first :: fn (args: *u8) s32 {
loop i := 0; i < 10; i += 1 {
std.mutex_lock(&mutex);
print("Hello from first thread!\n");
std.mutex_unlock(&mutex);
os_sleep_ms(50);
}
return 0;
}
second :: fn (args: *u8) s32 {
loop i := 0; i < 10; i += 1 {
std.mutex_lock(&mutex);
print("Hello from second thread!\n");
std.mutex_unlock(&mutex);
os_sleep_ms(100);
}
return 0;
}