- Notifications
You must be signed in to change notification settings - Fork4
A simple spinlock crate based on the abstractions provided by the `lock_api` crate.
License
Apache-2.0, MIT licenses found
Licenses found
rust-osdev/spinning_top
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A simple spinlock crate based on the abstractions provided bylock_api
.
First, import the crate as a dependency in yourCargo.toml
. Then you can use it in the following way:
use spinning_top::Spinlock;fnmain(){// Wrap some data in a spinlocklet data =String::from("Hello");let spinlock =Spinlock::new(data);make_uppercase(&spinlock);// only pass a shared reference// We have ownership of the spinlock, so we can extract the data without locking// Note: this consumes the spinlocklet data = spinlock.into_inner();assert_eq!(data.as_str(),"HELLO");}fnmake_uppercase(spinlock:&Spinlock<String>){// Lock the spinlock to get a mutable reference to the dataletmut locked_data = spinlock.lock();assert_eq!(locked_data.as_str(),"Hello"); locked_data.make_ascii_uppercase();// the lock is automatically freed at the end of the scope}
Spinlock::new
is aconst
function. This makes theSpinlock
typeusable in statics:
use spinning_top::Spinlock;staticDATA:Spinlock<u32> =Spinlock::new(0);fnmain(){letmut data =DATA.lock();*data +=1;assert_eq!(*data,1);}
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE orhttp://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT orhttp://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
About
A simple spinlock crate based on the abstractions provided by the `lock_api` crate.
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors5
Uh oh!
There was an error while loading.Please reload this page.