Previous: 7. ミューテックス |
Up: 7. ミューテックス |
Next: 7.2. ミューテックスの作成 |
freertos_critical_section_not_usedのサンプルプログラムで、メッセージが分断されてしまったのは、複数のタスクが同時にUSARTを利用しようとしたからです。とすれば、あるタスクがUSARTを使用中の場合には、他のタスクは前のタスクによるUSARTの利用が終了するまでは、USARTを使用できないというルールにすればよいのです。そうするとあるメッセージの表示中には他のタスクはそのタスクが実行するまで待ち、前のタスクが終了してから次のメッセージが表示されることになります。結果、メッセージは分断しないということになります。
実際の仕組みとしては、USARTを使用できる権利を1つ分だけ用意しておいて、それを取ったタスクがUSARTを利用できるという形にします。これを実現する仕組みがミューテックスです。ミューテックスはMutual Exclusion(相互排除)の略で、あるタスクが別のタスクの実行を抑制するといった意味になります。
このミューテックスの仕組みはよく見てみるとセマフォの仕組みそのものです。USART(先の例では自転車)を使用するための権利(先の例では鍵)を取った者がUSARTを使用することができ、権利を返したら次のタスクが権利を取ってUSARTを使用できるわけです。そのためFreeRTOSの内部ではミューテックスはセマフォを利用して実装されており、利用方法もセマフォの利用方法とそっくりです。使用の際にはセマフォと同様、ミューテックするの作成、ミューテックスを取る、ミューテックスを戻すという順番で使用します。
Previous: 7. ミューテックス |
Up: 7. ミューテックス |
Next: 7.2. ミューテックスの作成 |