diff --git a/rt-thread-version/rt-thread-standard/programming-manual/thread/thread.md b/rt-thread-version/rt-thread-standard/programming-manual/thread/thread.md index 6ee7ca52106ecd2e61eadc6628db123590735c3f..d5f3c0cf97d101b5f4baf1ce3c3998bc938e886b 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/thread/thread.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/thread/thread.md @@ -374,7 +374,7 @@ rt_err_t rt_thread_suspend (rt_thread_t thread); | \-RT_ERROR | 线程挂起失败,因为该线程的状态并不是就绪状态 | > [!NOTE] -> 注:RT-Thread对此此函数有严格的使用限制,该函数只能使用来挂起当前线程(即自己挂起自己),不可以在线程A中尝试挂起线程B,而且在挂起线程自己后,需要立刻调用 `rt_schedule()` 函数进行手动的线程上下文切换。用户只需要了解该接口的作用即可,强烈不建议在程序中使用该接口,该接口可以视为是内部接口。这是因为A线程在尝试挂起B线程时,A线程并不清楚B线程正在运行什么程序,一旦B线程正在使用例如互斥量、信号量等影响、阻塞其他线程的内核对象,如果此时其他线程也在等待这个内核对象,那么A线程尝试挂起B线程的操作将会引发其他线程的饥饿,严重危及系统的实时性。 +> 注:一个线程尝试挂起另一个线程是一个非常危险的行为,因此RT-Thread对此此函数有严格的使用限制:该函数只能使用来挂起当前线程(即自己挂起自己),不可以在线程A中尝试挂起线程B。而且在挂起线程自己后,需要立刻调用 `rt_schedule()` 函数进行手动的线程上下文切换。这是因为A线程在尝试挂起B线程时,A线程并不清楚B线程正在运行什么程序,一旦B线程正在使用例如互斥量、信号量等影响、阻塞其他线程(如C线程)的内核对象,如果此时其他线程也在等待这个内核对象,那么A线程尝试挂起B线程的操作将会引发其他线程(如C线程)的饥饿,严重危及系统的实时性。 恢复线程就是让挂起的线程重新进入就绪状态,并将线程放入系统的就绪队列中;如果被恢复线程在所有就绪态线程中,位于最高优先级链表的第一位,那么系统将进行线程上下文的切换。线程恢复使用下面的函数接口: