diff --git a/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md b/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md index a761acfd0c389b03ce3dd94f89967a4d655ee0ce..8d25c66d6c0304d0c00f13a18906ea4824ce4944 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md @@ -549,7 +549,7 @@ the consumer exit! ![FinSH 的中断、线程间同步示意图](figures/06inter_ths_commu2.png) -信号量的值初始为 0,当 FinSH 线程试图取得信号量时,因为信号量值是 0,所以它会被挂起。当 console 设备有数据输入时,产生中断,从而进入中断服务例程。在中断服务例程中,它会读取 console 设备的数据,并把读得的数据放入 UART buffer 中进行缓冲,而后释放信号量,释放信号量的操作将唤醒 shell 线程。在中断服务例程运行完毕后,如果系统中没有比 shell 线程优先级更高的就绪线程存在时,shell 线程将持有信号量并运行,从 UART buffer 缓冲区中获取输入的数据。 +信号量的值初始为 0,当 FinSH 线程试图取得信号量时,因为信号量值是 0,所以它会被挂起。当 console 设备有数据输入时,产生中断,从而进入中断服务例程。在中断服务例程中,它会读取 console 设备的数据,并把读得的数据放入 UART buffer 中进行缓冲,而后释放信号量,释放信号量的操作将唤醒 FinSH线程。在中断服务例程运行完毕后,如果系统中没有比 FinSH线程优先级更高的就绪线程存在时,FinSH线程将持有信号量并运行,从 UART buffer 缓冲区中获取输入的数据。 > [!NOTE] > 注:中断与线程间的互斥不能采用信号量(锁)的方式,而应采用开关中断的方式。