Skip to content

Commit

Permalink
fix words (#171)
Browse files Browse the repository at this point in the history
  • Loading branch information
ryoya-fujimoto authored Aug 6, 2024
1 parent 6bfe54a commit aaaf22c
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/server-app/concurrent/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ root@0dd4d9fad678:/work# python3 main.py
このハンズオンでは、Webアプリケーションの実装に欠かせない「並行処理」について取り扱います。

プログラミングにおいて、同時に複数の処理を行う「並行処理」は複雑で実装が難しいものです。
それは・・・(実装が難しい理由を本から引用)
それは普段のプログラムが「決定的」なものであるのに対し、並行処理は実行時に何が起こるのか分からない「非決定的」な動作となるからです。

しかしユーザからの多数のリクエストに対応するため、Webアプリケーションに並行処理の実装は必須です。
昨今ではライブラリやフレームワークが発達し並行処理を意識しなくてもWebアプリケーションを作ることが可能ですが、
Expand Down Expand Up @@ -433,7 +433,7 @@ end processing path = /, after request count = 2
end processing path = /, after request count = 3
```

`before request count` はともかくとして、「リクエスト数をカウントする」という要件は満たせているように見えます。
`before request count` はうまく出力できなくなってしまいましたが、「リクエスト数をカウントする」という要件は満たせているように見えます。
しかしここにもレースコンディションを引き起こすクリティカルセクションが隠れています。

```python
Expand Down Expand Up @@ -484,7 +484,7 @@ Type "help", "copyright", "credits" or "license" for more information.

仮に機械語レベルで複数ステップに分かれた処理であった場合、タイミングによってはthread1が1ステップ目を実行した後、
入れ替わりthread2が1ステップ目を実行してしまう可能性があります。
そのため`a += 1`のようなコードでも、レースコンディションを起こす可能性があります。
そのため`a += 1`のような一見単純なコードでも、レースコンディションを起こす可能性があります。

スレッドプログラミングにおいては常に「その処理がスレッドセーフなのか」、仕様を確認しつつ進める必要があります。

Expand Down

0 comments on commit aaaf22c

Please sign in to comment.