Closed mkroening closed 1 year ago
My gut feeling is that it's better to publish this as a separate crate: types in once_cell are deliberately non-parametric, it just uses the "default" synchronization. Would be happy to advertise that from Readme!
So, for example, if the leaf crate opts into critical section, than all upstream crates would also use critical_section, without any code changes.
A once-cell parametrized over locking API would certainly be a useful thing! But it's fundamentally a different design.
What would work for this crate is critical_section
-like setup, but with real mutexes. That is, using some linker magic to inject an overridable implementation of mutexes. I don't know whether such things exist.
I understand. Thanks for your quick reply! :)
I think, I'll go for a separate crate based on once_cell
then. That way, we are able to use different mutex implementations at different places.
Would you prefer a name without reference to once_cell
like lock_cell
instead of something like once_cell_lock_api
? Would you rather keep this issue open until the crate is published and referenced in the Readme or close it now, since the issue itself is out of scope for once_cell
?
Would you prefer a name without reference to once_cell like lock_cell instead of something like once_cell_lock_api?
No opinion
Would you rather keep this issue open until the crate is published and referenced in the Readme or close it now, since the issue itself is out of scope for once_cell?
let's keep it open
I would like to use
once_cell
in libhermit-rs, a kernel with SMP support where neither spinning nor usingcritical-section
alone would be sufficient. (spinning alone does not work because of interrupts, critical sections are not ideal as they are global and not parallel)A design using
lock_api
would allow us to provide our own mutex implementation via a generic type parameter onOnceCell
andLazy
:With this, it would also be possible to use
spin-rs
if one would really want to (https://github.com/matklad/once_cell/issues/61).Would you be open to such an approach, @matklad? I could start working on a PR.