Coroutine pending_increment does not halt execution of coroutine
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 45/100
調査の方向性
サンプルと UE4 4.22 のセットアップを使用して、REPL で coroutine の動作を再現します。SkMind の pending リスト内で pending_increment を追跡し、m_pending_count が実行にどのような影響を与えるかを調べます。完了条件は、期待される出力と一致するように、c1 がインクリメント後に停止し、pending_decrement の後に再開することです。
索引モデルが issue の本文から書いたものです。
説明
Issue by error454
Wednesday Jul 03, 2019 at 03:02 GMT
Originally opened as https://github.com/SkookumScript/SkookumScript-Plugin/issues/7
UE4 Version
4.22
SkookumScript Version
4.22
Describe the bug
Calling pending_increment does not suspend a running coroutine as the documentation alludes to.
// Increments the number of expressions / tasks currently executing in
// parallel that the invoked object is waiting for a return value from.
// If the number was 0 and is increased then the invoked object will be
// suspended until the pending number is reduced back to 0 by calling
// pending_decrement().
To Reproduce
Run the following sample code in the REPL
// Coroutine suspend test
!x : 0
!y : 0
!f : (Integer in)[in += 1]
!c1 : branch[loop[f(x) _wait(1.0)]]
!c2 : branch[loop[f(y) _wait(1.0)]]
race
[
loop
[
println(x, ".", y)
_wait(1.0)
]
[
_wait(2)
c1.pending_increment(1)
_wait(1)
c1.pending_decrement
_wait(10)
]
]
// Expected Output:
// 0.0
// 1.1
// 1.2
// 2.3
// ...
Expected behavior
After calling c1.pending_increment(1) the c1 coroutine should stop running until I call c1.pending_decrement.
Additional context
I've done some debugging around this. When I break on the call to c1.pending_increment, I see that c1 already has an m_pending_count of 1, which means the coroutine is already on the SkMind's pending list. I simply don't see any glue that stops execution of the coroutine once it is on that list.
- 主要言語
- C++
- スター
- 138
- フォーク
- 22
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
EpicSkookumScript/SkookumScript-Plugin のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 42/100
EpicSkookumScript/SkookumScript-Plugin#50 · コメント 5 件 ·
-
Is the plugin alive?オープン
難易度 5/5 1週間以上 初心者へのやさしさ 10/100
EpicSkookumScript/SkookumScript-Plugin#47 · コメント 7 件 ·
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
EpicSkookumScript/SkookumScript-Plugin の issue をすべて見る
似ている issue
-
Component: Python API
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
Vector35/binaryninja-api#8649 ·
メンテナーはふだん 3 日以内に返信
-
ai_p2 comp-parquet-reader-v3
難易度 2/5 半日 初心者へのやさしさ 66/100
ClickHouse/ClickHouse#124986 ·
メンテナーはふだん 1 日以内に返信
-
bug product: very_good_flutter_plugin
難易度 1/5 1〜3時間 初心者へのやさしさ 78/100
VeryGoodOpenSource/very_good_templates#654 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
AcademySoftwareFoundation/OpenImageIO#5550 ·
メンテナーはふだん 2 日以内に返信