|
6 years ago | |
---|---|---|
CMakeModules | 6 years ago | |
data | 6 years ago | |
debian | 6 years ago | |
deps | 6 years ago | |
scripts | 6 years ago | |
test | 6 years ago | |
travis | 9 years ago | |
twine | 6 years ago | |
.gitignore | 6 years ago | |
.gitmodules | 6 years ago | |
.travis.yml | 6 years ago | |
AUTHORS.md | 6 years ago | |
CMakeLists.txt | 6 years ago | |
LICENSE | 9 years ago | |
README | 9 years ago | |
README.md | 6 years ago | |
build.sh | 6 years ago | |
darwin.txt | 6 years ago | |
linux.txt | 6 years ago | |
package.sh.in | 6 years ago | |
twine.pc.in | 6 years ago |
README.md
twine
Twine is a very small threading library for C++.
It's similar in scope to TinyThread++, so let's blatantly steal from that project's description:
Need portable threads for your C++ app? Is C++11 unavailable for your target compiler(s)? Is Boost too large?
So why start twine if TinyThread++
already meets those requirements?
- Twine extends what the C++ standard requires to address a number of
shortcomings in the standard (and also
TinyThread++
). - Twine doesn't require embedding into your project, but can be installed system-wide; in particular it supports the pkg-config standard.
- Twine adds a few convenient multithreading-related constructs such as the
tasklet
class, extended functionality, etc.
That said, TinyThread++
may well be what you're looking for, precisely because
those differences have side-effects you might not like. It's cool, I won't hate
you.
Features
- Dual-licensed! Yes, that's a feature - it means you can use it in FLOSS for free, but can get a license for commercial software, too.
- Portable
- tested under Windows, Mac OS X, Linux, FreeBSD and should work under most POSIX compatible systems.
- tested on x86_64, Arm and MIPS architectures
- tested with C++11 or later and C++98 compatible compilers.
- Still relatively faithful to the C++11 standard. That doesn't mean the entire standard's thread-related scope is implemented.
- Minimal overhead - most functions generate compact inline code.
Requirements
- CMake for the build system.
- Twine uses CppUnit for unit tests only.
- Twine uses a very limited subset of meta.
It's so limited it's barely necessary, but hey,
pkg-config
makes it easy!
Installation (Ubuntu)
Follow the instructions to add the Ubuntu PPA to your system. Then run (as root):
apt-get install libtwine-dev
This will install the binary package file as well as the development headers and all dependencies.
Installation
After installing the requirements, run:
$ cmake .
This will configure the build system. You might want to make sure dependencies are found if they're not installed system wide:
$ PKG_CONFIG_PATH=/path/to/dir/lib/pkgconfig cmake .
Additionally, you might want to specify an installation prefix for the library and header files:
$ cmake -DCMAKE_INSTALL_PREFIX=/path/to/dir .
You can also switch on C++11 mode, which primarily uses the meta library with all C++11 features enabled.
$cmake -DTWINE_USE_CXX11=1 .
Usually, you can just run the following commands to get going:
$ make testsuite && ./testsuite
Install using the DESTDIR
environment variable, if necessary:
$ make DESTDIR=/some/prefix install
CI Building
The build.sh script uses build-chroot
and build-dependencies
to create a suitable build environment on CI, possibly on emulated hardware.
Run e.g.
$ ./build.sh x86_64
$ ./build.sh mips
License
See LICENSE.
Authors
See Authors.