-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
demo clock and source handling BlockingIO #140
Conversation
Emscripten blocks on the CI ... need to further investigate. |
Pull Request Review MarkdownHey there! 👋 Here's a summary of the previous results and suggestions for the pull request: Changes
Suggestions
BugsNo potential bugs found. Good job! 🐛 Improvements
RatingPlease rate the code from 0 to 10 based on the criteria of readability, performance, and security. Explain briefly. That's it! Let me know if you need any further assistance. 😄 |
The idea is that basically only source node "knows" that no more data should be expected. |
92cc323
to
4efd8c9
Compare
constrain the argument of the perfect forwarding constructor to be less greedy in competition to the wrapped class' copy constructor. see: https://sonarcloud.io/project/issues?resolved=false&sinceLeakPeriod=true&types=BUG&pullRequest=140&id=fair-acc_graph-prototype&open=AYmCNbrn5GyAuvTGfMP3
SonarCloud Quality Gate failed. 0 Bugs 59.6% Coverage The version of Java (11.0.17) you have used to run this analysis is deprecated and we will stop accepting it soon. Please update to at least Java 17. Catch issues before they fail your Quality Gate with our IDE extension SonarLint |
Implements a BlockingIO clock source that generates burst samples with an average constant sampling rate.
The meaty part for the end-user and targeted reference implementation for blocking IO is:
Added a graph-specific atomic 'progress' counter that can be listened to that is updated whenever a blocking block unblocked and processed data. This can be used, for example, by the scheduler to sleep -- if no other block can process data -- and be woken up when one of the blocking blocks produced some data.
Added
node::available_[input,output]_samples(Container&)
andDONE
workaround... re-checking whether there are no pending unprocessed samples for blocks implementing the BlockingIO policy. The issue is that the present 'DONE' concept assumes a global state that does not hold up for all multithreading corner cases.
To be discussed: a better solution could be to propagate the
DONE
state to dependent blocks (i.e. via tags) and only declareDONE
until all blocks ordered from source to sink can communicate done. ... to be further evaluated.