トルネードのコルーチンの仕組みはわかったのですが、ここでわからない問題がありましたので、手を貸してください
このビジネス ルーチンを検討してください。ここに 5 つのデータベース操作があります
#operation 1
#use asynchronous method ,doesn't matter
#switch to other coroutine
#operation 2
#use asynchronous method ,doesn't matter
#switch to other coroutine
#operation 3
#use asynchronous method , but i'll use the result do
#some process then update in operation 4
#switch to other coroutine
#operation 4
#use asynchronous method ,doesn't matter
#switch to other coroutine
#operation 5
#use asynchronous method ,doesn't matter
#switch to other coroutine
ご覧のとおり、他の関連するコルーチンがそれぞれの操作 3 と操作 4 の間で同じテーブルまたは同じレコードに更新されることを望んでいません。つまり、ダーティな読み取りと書き込みが行われます。
#coroutine 1 operation 3
#coroutine 2 operation 3
#coroutine 1 operation 4
#coroutine 2 operation 4
受け入れられない場合、適切な順序にする必要があります
#coroutine 1 operation 3
#coroutine 1 operation 4
#coroutine 2 operation 3
#coroutine 2 operation 4
操作 3 でブロック メソッドを使用できますが、それはサーバー全体をブロックします。解放するように指示するまで、メイン ループが特定のコルーチンを実行しないことを願っています。