#include "os.h" int shared_var = 500; lock_t lock; void user_task0(void) { lib_puts("Task0: Created!\n"); while (1) { lib_puts("Task0: Running...\n"); lib_delay(1000); } } void user_task1(void) { lib_puts("Task1: Created!\n"); while (1) { lib_puts("Task1: Running...\n"); lib_delay(1000); } } void user_task2(void) { lib_puts("Task2: Created!\n"); while (1) { for (int i = 0; i < 50; i++) { lock_acquire(&lock); shared_var++; lock_free(&lock); lib_delay(100); } lib_printf("The value of shared_var is: %d \n", shared_var); } } void user_task3(void) { lib_puts("Task3: Created!\n"); while (1) { lib_puts("Trying to get the lock... \n"); lock_acquire(&lock); lib_puts("Get the lock!\n"); lock_free(&lock); lib_delay(1000); } } void user_init() { lock_init(&lock); task_create(&user_task0); task_create(&user_task1); task_create(&user_task2); task_create(&user_task3); }