roc-streaming / roc-toolkit

Real-time audio streaming over the network.
https://roc-streaming.org
Mozilla Public License 2.0
1.09k stars 213 forks source link

Implement freelist class #734

Open gavv opened 5 months ago

gavv commented 5 months ago

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 Lists

It 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 like core::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.

nataliayave commented 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?

gavv commented 5 months ago

Hi, thanks.

It belongs to roc_core module. See here: https://roc-streaming.org/toolkit/docs/internals/code_structure.html

mihir-mihir commented 4 months ago

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

gavv commented 4 months ago

@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.

mihir-mihir commented 4 months ago

Thanks, I've commented on #749

gavv commented 3 months ago

@mihir-mihir I guess we can assume that the issue is free, please ping me if/when you want to be assigned.

mihir-mihir commented 3 months ago

@gavv yes I'll take this one thanks

gavv commented 3 months ago

Awesome

veronikaro commented 1 month ago

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.

mihir-mihir commented 1 month ago

Hi @veronikaro, go ahead

Ahilan001 commented 1 month ago

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?

gavv commented 1 month ago

@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

veronikaro commented 1 month ago

@gavv thanks, will do! :)