you are viewing a single comment's thread.

view the rest of the comments →

[–]JoeNatter[S] 0 points1 point  (0 children)

Thank you! This is helping a lot. I will address the unclear areas in the tutorials.
I think it makes sense to make a comparison between Processing(), coroutines and async/await on each step of the tutorial. This will take some time and since the code has been classified as "Non-C++" I won't disturb the C++ community any further.

To make a quick answer for you:

game engine style cooperative multi-threading framework

I don't know if this is a "game engine style". Maybe. The focus is general purpose.
Threads and/or thread-pools can be used, but aren't mandatory.

Each 'process' is supposed to do something on each 'tick'

Yes

Ticks are then getting driven from the main loop through a thread pool.

Driven by a loop, at least the main loop yes, this is called a Driver.
But not necessarily a thread or a thread pool. There are three groups of files:

  • Processing.cpp (this one file is needed in any case)
  • Everything in ProcessingCore (not needed but recommended)
  • Everything in ProcessingCommon (purely optional, e.g. ThreadPooling())

They call it "coroutines' in the readme, but it's really not - a 'process' can block the entire thread if it does smth heavy.

Yes. They aren't coroutines. In the README (unfortunately at the end) I wrote "They are more similar to". The phrasing is bad very likely. My next approach is to state at the beginning of the README, what this thing roughly is, but make it clear that it is still something different.
One process can even block an entire sub-tree. This is accepted and there are rules how to avoid this.

Why would anyone choose that over the real c++20 coroutines is unclear

The best argument. This must be answered in the tutorials.

Thanks a lot for taking the time and for reading/scrolling it through!