Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

C++ wrapper of the pthread library

License

NotificationsYou must be signed in to change notification settings

HerbertKoelman/cpp-pthread

Repository files navigation

Build StatusQuality Gate Statuscodecov

Some C/C++ compilers are not implementing all of C++11 and above standard, it's often lacking the concurrency features that the standard brings. These compilers will at some point be updated. I was therefore looking for a way to reduce the effort of switching from a specific implementation to the C++11 standard one.

This projetc is the resulting code.

WARN of course, this library is a replacement of C++11 features, it is best to use the standard implementation if your compiler support it.

To use this library:

mkdir build && cd buildcmake ..make install

Install moves files into your system's default location for headers and libraries (often /usr/local/include and /usr/local/lib). Use this command line argument to change install target directory:

cmake -DCMAKE_INSTALL_PREFIX=/your/destination/

Doxygendocumentation can be generated with this command. I hope this help make things easier to use and understand.

make doxygen

Doxygen can be downloadedhere.

Themake targetpackage will produce au tar.gz that can be distributed.

How to use it

Once compiled and installed in a location that suites you, use your compiler options to reference the headers and the library directory. In almoast all casses you can:

  • include#include "pthread/phtread.hpp" in your code to replace of the standard includes.
  • replacestd namespace withpthread ( std::condition_variable becomes pthread::condition_variable, etc)

Once your compiler is upgraded you simply include the standard#include <thread> and replace the namespacepthread forstd.

Sample code can be found in thetests directory.

If you use CMake, the test are built and run like this (in yourbuild directory):

make all test

Coverage

Thecmake/CoverageConfig.cmake package create a make targetcoverage. When used, it will produce a coverage report usinglcov.

$ make coverage[100%] Coverage report (/shared/home/herbert/c++/cpp-pthread/cmake/LCOV)Handling directory [./CMakeFiles/cpp-pthread-static.dir/src]Initializing [coverage.info] fileHandling directory [./googletest-build/googlemock/gtest/CMakeFiles/gtest.dir/src]Adding tracefile [/tmp/tmp.GQvVYkluCo.coverage] to [coverage.info]Handling directory [./googletest-build/googlemock/gtest/CMakeFiles/gtest_main.dir/src]Adding tracefile [/tmp/tmp.4xDeqRUZJO.coverage] to [coverage.info]Handling directory [./tests/CMakeFiles/abstract_thread_tests.dir]Adding tracefile [/tmp/tmp.UqJ7PH9H1e.coverage] to [coverage.info]Handling directory [./tests/CMakeFiles/concurrency_tests.dir]Adding tracefile [/tmp/tmp.a24dLMFBkh.coverage] to [coverage.info]Handling directory [./tests/CMakeFiles/exception_tests.dir]Adding tracefile [/tmp/tmp.GsxpxMbh9W.coverage] to [coverage.info]Handling directory [./tests/CMakeFiles/synchronized_queue_tests.dir]Adding tracefile [/tmp/tmp.NxAsqKaPSp.coverage] to [coverage.info]Handling directory [./tests/CMakeFiles/thread_tests.dir]Adding tracefile [/tmp/tmp.8J60C5yNeg.coverage] to [coverage.info]Reading tracefile coverage.info                                          |Lines       |Functions  |BranchesFilename                                  |Rate     Num|Rate    Num|Rate     Num================================================================================[/shared/home/herbert/c++/cpp-pthread/]include/pthread/condition_variable.hpp    |64.7%     68| 100%     5|    -      0include/pthread/lock_guard.hpp            | 100%     28| 100%     6|    -      0include/pthread/sync_queue.hpp            |79.3%     29|77.8%     9|    -      0include/pthread/thread.hpp                |83.3%     12|83.3%     6|    -      0src/condition_variable.cpp                |68.8%     64|80.0%    10|    -      0src/exceptions.cpp                        |91.5%     47|88.2%    17|    -      0src/mutex.cpp                             |81.8%     33|83.3%     6|    -      0src/pthread.cpp                           | 100%      2| 100%     1|    -      0src/read_write_lock.cpp                   |69.6%     46|72.7%    11|    -      0src/thread.cpp                            |79.0%    162|92.6%    27|    -      0tests/abstract_thread_tests.cpp           |98.0%     99| 100%    13|    -      0tests/concurrency_tests.cpp               |93.5%    123| 100%    12|    -      0tests/exceptions_tests.cpp                |97.8%    181|95.2%    21|    -      0tests/synchronized_queue_tests.cpp        |94.5%    109|94.4%    18|    -      0tests/thread_tests.cpp                    |88.1%    201|95.2%    21|    -      0================================================================================                                    Total:|87.2%   1204|91.3%   183|    -      0

WARN you have to run the test before a report can be displayed (make all test).

Usefull links

Memory management on AIX

Memory management on AIX is quite sophisticated, memory managementcan be fine tuned very precisely. Consider using these compiler/linker options when using pthreads:

  • -bmaxdata:0xN0000000 this option activates the large memory model, N is a number in the range of [1-8].
  • -bmaxmem=-1 this option tells the compiler to use as much memory it needs to optimize your code.

Thread stack size:

  • 32bits programs allocate 96KB per thread on the program's heap.
  • 64bits programs allocate 192KB per thread on the program's heap.

On many Linux implementations and on Mac OS X the stack size is defaulted to 8MB. You may consider setting this as a default.

More detailed information can be found in thisRedBook (chapter 8).

project links

other things

Conan

This project can produce Conan Artefacts using these commands:

$ conan create .. rcs/testing...$ conan upload cpp-pthread...

misc

Diagrams

overview

About

C++ wrapper of the pthread library

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp