Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Coroutine pending_increment does not halt execution of coroutine

Đang mở
#7 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

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
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
cpp, unreal-engine
Lĩnh vực
game-dev

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ả

bug

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

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của EpicSkookumScript/SkookumScript-Plugin

Tất cả issue của EpicSkookumScript/SkookumScript-Plugin

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.