thread.c

    技术2022-05-20  38

    thread_block()用于将current_thread 终止变成blocked状态,不能跑,只有在调用thread_unblock()后进入就绪队列。thread_yield()用于直接把current_thread进入就绪队列,在任意时刻可再次被调用。list_entry返回一个线程。idle_thread平常是不在ready_list中的。1.在thread_start()即系统刚开始时,idle_thread在ready_list中。2.在ready_list为空时,调用idle_thread。idle() 在thread_start调用{1.把初始化为0的信号量设为1,即将idle_thread放入就绪队列。2.把idle_thread的状态设为blocked。

    }running_thread()返回一个running thread

    thread_current()是加上一个check的running_threadinit_thread(){1.初始化thread2.状态设为blocked3.把栈的空间变小4.magic值5.放入all_list}next_thread_to_run(){是否就绪队列为空?返回idle_thread:返回就绪队列的第一个,并移除}thread_schedule_tail(prev){current_thread的thread_tick清0激活process如果prev已经dying,则销毁。}schedule(){调用这个的函数是thread_block,thread_exit,thread_yield.因为前提是current_thread状态不能是running。

    }

     

    总结来看,thread对外有一些接口

    1.thread_create()

    2.thread_block();

    3.thread_unblock()

    4.thread_name()

    5.thread_current()

    6.thread_yield()

    7.thread_set_priority()

    8.next_thread_to_run()


    最新回复(0)