Open gavv opened 5 months ago
Hi, I am interesting in solving this issue. This would be my first time contributing to an open source project. Where would I find where this issue is taking place? Which file should I be working on?
Hi, thanks.
It belongs to roc_core module. See here: https://roc-streaming.org/toolkit/docs/internals/code_structure.html
I'd be interested in giving this one and/or #602 a shot, @nataliayave are you still working on this? I can pick up #602 after if you are, otherwise I can take both
@mihir-mihir While we're waiting for reply from Natalia, probably you'd be interested in #749, which is also about lock-free programming.
UPD: Oh, and there is also #362, which was abandoned a while ago, but I think is pretty interesting.
Thanks, I've commented on #749
@mihir-mihir I guess we can assume that the issue is free, please ping me if/when you want to be assigned.
@gavv yes I'll take this one thanks
Awesome
Hey @mihir-mihir, are you still working on this? @gavv if not, could you please assign me to the issue? I would like to give it a go.
Hi @veronikaro, go ahead
Hi, I know I didn't request the issue here, but I have been working on it too. I am going to finish working on the issue today, so would it be okay to make a pull request when I finish it?
@Ahilan001 The patch you sent is confusing, looks like some random pieces of code?.. And it doesn't compile. Also please read coding guidelines: https://roc-streaming.org/toolkit/docs/development/coding_guidelines.html
Veronika, it would be great if you could take this issue :) @veronikaro
@gavv thanks, will do! :)
Subtask extracted from #602. See that task for rationale.
Add new class
core::Freelist<T>
, which implements lock-free free list based on this article: Solving the ABA Problem for Lock-Free Free ListsIt should be modeled after
core::List<T>
. It should implement lock-free LIFO based on singly linked list, with just two operations: push_back() and pop_back(). It should be intrusive, just likecore::List
, i.e. elements should inherit node class, so that node data is embedded into element instead of being allocated separately.We also need to cover it with unit tests.