Coroutine pending_increment does not halt execution of coroutine
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
Hướng nghiên cứu
Tái hiện hành vi của coroutine trong REPL bằng cách sử dụng mẫu và thiết lập UE4 4.22. Theo dõi pending_increment qua danh sách đang chờ của SkMind và kiểm tra cách m_pending_count ảnh hưởng đến việc thực thi; hoàn thành có nghĩa là c1 dừng sau phép tăng và tiếp tục sau pending_decrement, khớp với đầu ra mong đợi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- C++
- Star
- 138
- Fork
- 22
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của EpicSkookumScript/SkookumScript-Plugin
-
Clarify Plugin InstallationĐang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 42/100
EpicSkookumScript/SkookumScript-Plugin#50 · 5 bình luận ·
-
Is the plugin alive?Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 10/100
EpicSkookumScript/SkookumScript-Plugin#47 · 7 bình luận ·
-
bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
-
Feature to Stop debuggingĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
Tất cả issue của EpicSkookumScript/SkookumScript-Plugin
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày
-
README: CI link/badge checkĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
SCIInstitute/SCIRun#2842 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
agent:Windows bug code-review LOW testing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 63/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Translate gcc cheat sheet to frĐang mởgood first issue help wanted language:fr translation
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 85/100
mrvi0/cli-cheatsheet#160 ·