Update README.md

This commit is contained in:
mandreyel 2017-11-03 22:32:49 +01:00 committed by GitHub
parent dcfce4d0ca
commit 15fc031b9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,8 +1,15 @@
# mio # mio
A simple header-only cross-platform C++11 memory mapping library with an MIT license. A simple header-only cross-platform C++11 memory mapping library with an MIT license.
## Example mio has been created with the goal to be easily includable (i.e. no dependencies) in any C++ project that needs memory mapped file IO without the need to pull in Boost.
There are three ways to a create a mapping:
The primary motivation for writing this library instead of using Boost.Iostreams, was the lack of support for establishing a memory mapping with an already open file handle/descriptor. This is possible with mio.
Albeit a minor nitpick, Boost.Iostreams implements memory mapped file IO with a `std::shared_ptr` to provide shared semantics, even if not needed, and the overhead of the heap allocation may be unnecessary and/or unwanted.
In mio, there are two classes to cover the two use-cases: one that is move-only (basically a zero-cost abstraction over the system specific mmapping functions), and the other that acts just like its Boost.Iostreams counterpart, with shared semantics.
## Create a mapping
There are three ways to do that:
- Using the constructor, which throws on failure: - Using the constructor, which throws on failure:
```c++ ```c++
@ -40,7 +47,7 @@ int main()
``` ```
However, mio does not check whether the provided file descriptor has the same access permissions as the desired mapping, so the mapping may fail. However, mio does not check whether the provided file descriptor has the same access permissions as the desired mapping, so the mapping may fail.
General usage: ## Example
```c++ ```c++
#include <mio/mmap.hpp> #include <mio/mmap.hpp>
#include <system_error> // for std::error_code #include <system_error> // for std::error_code