Uses old Rust 2015
0.1.0 |
|
---|
#12 in #shmem
41KB
680 lines
mem_file
Provides a wrapper around native shared memory for Linux and Windows.
This crate is ideal if you need to share large amounts of data with another process purely through memory.
Usage
Creator based on examples/create.rs
//Create a MemFile at `pwd`\test.txt of size 4096
let mut mem_file: MemFile = match MemFile::create(PathBuf::from("test.txt"), 4096) {<...>};
//Set explicit scope for the lock (no need to call drop(shared_data))
{
//Acquire write lock
let mut shared_data = match mem_file.wlock_as_slice::<u8>() {<...>};
let src = b"Some string you want to share\x00";
//Write to the shared memory
shared_data[0..src.len()].copy_from_slice(src);
}
Slave based on examples/open.rs
// Open an existing MemFile from `pwd`\test.txt
let mut mem_file: MemFile = match MemFile::open(PathBuf::from("test.txt")) {<...>};
//Set explicit scope for the lock (no need to call drop(shared_data))
{
//Acquire read lock
let mut shared_data = match mem_file.rlock_as_slice::<u8>() {<...>};
//Print the content of the shared memory as chars
for byte in &shared_data[0..256] {
if *byte == 0 { break; }
print!("{}", *byte as char);
}
}
License
Licensed under either of
at your option.
Contribution
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.
Dependencies
~2MB
~42K SLoC