{"id":18736888,"url":"https://github.com/bitwizeshift/bit-concurrency","last_synced_at":"2026-01-27T10:07:02.930Z","repository":{"id":81485339,"uuid":"134177064","full_name":"bitwizeshift/bit-concurrency","owner":"bitwizeshift","description":"A simple concurrency library","archived":false,"fork":false,"pushed_at":"2018-05-21T06:26:35.000Z","size":55,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-28T17:14:10.131Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bitwizeshift.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-20T18:44:01.000Z","updated_at":"2022-11-03T11:18:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"97c902e1-b240-4419-a20e-80b755dbff96","html_url":"https://github.com/bitwizeshift/bit-concurrency","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitwizeshift%2Fbit-concurrency","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitwizeshift%2Fbit-concurrency/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitwizeshift%2Fbit-concurrency/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitwizeshift%2Fbit-concurrency/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bitwizeshift","download_url":"https://codeload.github.com/bitwizeshift/bit-concurrency/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239611993,"owners_count":19668274,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T15:22:52.446Z","updated_at":"2025-11-17T05:30:17.092Z","avatar_url":"https://github.com/bitwizeshift.png","language":"CMake","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `bit::concurrency` library\n\n[![Build Status](https://travis-ci.org/bitwizeshift/bit-concurrency.svg?branch=master)](https://travis-ci.org/bitwizeshift/bit-concurrency)\n[![Build status](https://ci.appveyor.com/api/projects/status/a0gi3i20pye7038a/branch/master?svg=true)](https://ci.appveyor.com/project/bitwizeshift/bit-concurrency/branch/master)\n[![Github Issues](https://img.shields.io/github/issues/bitwizeshift/bit-concurrency.svg)](http://github.com/bitwizeshift/bit-concurrency/issues)\n[![Tested Compilers](https://img.shields.io/badge/compilers-gcc%20%7C%20clang%20%7C%20msvc-blue.svg)](#tested-compilers)\n[![Documentation](https://img.shields.io/badge/docs-doxygen-blue.svg)](http://bitwizeshift.github.io/bit-concurrency)\n[![GitHub License](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/bitwizeshift/bit-concurrency/master/LICENSE.md)\n[![Github Releases](https://img.shields.io/github/release/bitwizeshift/bit-concurrency.svg)](https://github.com/bitwizeshift/bit-concurrency/releases)\n\nThis library contains various concurrency utilities.\n\n\u003c!-- SECTION: Getting Started --\u003e\n\n## \u003ca name=\"getting-started\"\u003e\u003c/a\u003eGetting Started\n\n### \u003ca name=\"getting-started-prerequisites\"\u003e\u003c/a\u003ePrerequisites\n\n- [CMake](https://cmake.org) version 3.1 or above\n- [Catch](https://github.com/philsquared/catch) version 2 (Unit Tests only)\n\n\u003c!-- SECTION: Building --\u003e\n\n## \u003ca name=\"building\"\u003e\u003c/a\u003eBuilding\n\nAll building is done using CMake\n\n### \u003ca name=\"building-library\"\u003e\u003c/a\u003eBuilding Library\n\nBuilding this library is just like building any library built with cmake\n\n1. Configure the project\n2. Build the target\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake ..\ncmake --build . # alternatively, cmake --build . --target bit_concurrency\n```\n\n### \u003ca name=\"building-header-self-containment-tests\"\u003e\u003c/a\u003eBuilding Header Self-Containment Tests\n\nThis library includes a separate target that generates a series of `.cpp` files that include public\nheader files independently. The purpose of this target is to ensure that each header is written\nwithout requiring transitive dependencies from the included file.\n\nThis catches headers written like:\n\n**`foo.hpp`**\n```c++\nclass foo{ ... };\n```\n\n**`foo_utilities.hpp`**\n```c++\n// Accidentally does not include 'B'\ntemplate\u003ctypename...Args\u003e\nfoo make_foo(Args\u0026\u0026...args);\n```\n\n**`foo_utilities.cpp`**\n```c++\n#include \"foo.hpp\" // includes 'foo' before 'foo_utilities'\n#include \"foo_utilites.hpp\"\n```\n\nSuch an ordering would compile correctly when compiling `*.cpp` files, but would fail upon including\n`foo_utilities.hpp` without first including `foo.hpp`\n\nThe Header Self-Containment Tests prevent these errors, since it will attempt to compile `foo.hpp`, which\nwill not resolve all the possible dependencies.\n\nTo build this test:\n\n1. specify the CMake argument `-DBIT_CONCURRENCY_COMPILE_HEADER_SELF_CONTAINMENT_TESTS=On` during configuration,\n2. build the containment tests target `bit_concurrency_header_self_containment_test`\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake -DBIT_CONCURRENCY_COMPILE_HEADER_SELF_CONTAINMENT_TESTS=On ..\ncmake --build . --target bit_concurrency_header_self_containment_test\n```\n\n### \u003ca name=\"building-tests\"\u003e\u003c/a\u003eBuilding Tests\n\nTo build and run unit tests:\n\n1. specify the CMake argument `-DBIT_CONCURRENCY_COMPILE_UNIT_TESTS=On` during configuration,\n2. build the unit test target, and\n3. run the unit tests with `ctest`\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake -DBIT_CONCURRENCY_COMPILE_UNIT_TESTS=On ..\ncmake --build . --target bit_concurrency_test\nctest . --output-on-failure\n```\n\n#### \u003ca name=\"building-tests-sanitizers\"\u003e\u003c/a\u003eSanitizers\n\nThere are various sanitizers available, all of which run with the current unit test suite.\nSanitizers currently only run for systems that support the `gold` linker (*nix based systems).\n\nNote that only one sanitizer may be run at a given time due to conflicting compile-flag requirements.\n\n##### ASAN (Address Sanitizer)\n\nTo enable Address Sanitizer (ASAN):\n\n1. specify the CMake arguments `-DBIT_CONCURRENCY_COMPILE_UNIT_TESTS=On -DBIT_CONCURRENCY_COMPILE_ASAN=On` during configuration,\n2. build the unit test target, and\n3. run the unit tests with `ctest`\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake -DBIT_CONCURRENCY_COMPILE_UNIT_TESTS=On -DBIT_CONCURRENCY_COMPILE_ASAN=On ..\ncmake --build . --target bit_concurrency_test\nctest . --output-on-failure\n```\n\n##### MSAN (Memory Sanitizer)\n\nTo enable Memory Sanitizer (MSAN):\n\n1. export the environment variable `MSAN_OPTIONS=poison_in_dtor=1`,\n2. specify the CMake arguments `-DBIT_CONCURRENCY_COMPILE_UNIT_TESTS=On -DBIT_CONCURRENCY_COMPILE_MSAN=On` during configuration,\n3. build the unit test target, and\n4. run the unit tests with `ctest`\n\n```bash\nmkdir build \u0026\u0026 cd build\nexport MSAN_OPTIONS=poison_in_dtor=1\ncmake -DBIT_CONCURRENCY_COMPILE_UNIT_TESTS=On -DBIT_CONCURRENCY_COMPILE_MSAN=On ..\ncmake --build . --target bit_concurrency_test\nctest . --output-on-failure\n```\n\n##### TSAN (Thread Sanitizer)\n\nTo enable Thread Sanitizer (TSAN):\n\n1. specify the CMake arguments `-DBIT_CONCURRENCY_COMPILE_UNIT_TESTS=On -DBIT_CONCURRENCY_COMPILE_TSAN=On` during configuration,\n2. build the unit test target, and\n3. run the unit tests with `ctest`\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake -DBIT_CONCURRENCY_COMPILE_UNIT_TESTS=On -DBIT_CONCURRENCY_COMPILE_TSAN=On ..\ncmake --build . --target bit_concurrency_test\nctest . --output-on-failure\n```\n\n##### UBSAN (Undefined-Behavior Sanitizer)\n\nTo enable Undefined Behavior Sanitizer (UBSAN):\n\n1. specify the CMake arguments `-DBIT_CONCURRENCY_COMPILE_UNIT_TESTS=On -DBIT_CONCURRENCY_COMPILE_UBSAN=On` during configuration,\n2. build the unit test target, and\n3. run the unit tests with `ctest`\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake -DBIT_CONCURRENCY_COMPILE_UNIT_TESTS=On -DBIT_CONCURRENCY_COMPILE_UBSAN=On ..\ncmake --build . --target bit_concurrency_test\nctest . --output-on-failure\n```\n\n#### \u003ca name=\"building-tests-code-formatters\"\u003e\u003c/a\u003eCode Formatters\n\nTODO: Add code-formatters\n\n### \u003ca name=\"building-tests-generating-documentation\"\u003e\u003c/a\u003eGenerating Doxygen Documentation\n\nTo generate documentation:\n\n1. specify the cmake configuration argument `-DBIT_CONCURRENCY_GENERATE_DOCUMENTATION=On`, and\n2. build the cmake target `bit_concurrency_doxygen`\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake -DBIT_CONCURRENCY_GENERATE_DOCUMENTATION=On ..\ncmake --build . --target bit_concurrency_doxygen\n```\n\nThis will generate documentation into the `doc/` directory\n\n\u003c!-- SECTION: Deploying --\u003e\n\n## \u003ca name=\"deploying\"\u003e\u003c/a\u003eDeploying\n\nTODO: Document deployment\n\n### Installing\n\nTODO: Document installation\n\n### Using as Submodule\n\nTODO: Document consuming as a submodule\n\n\u003c!-- SECTION: Tested Compilers --\u003e\n\n## \u003ca name=\"tested-compilers\"\u003e\u003c/a\u003eTested Compilers\n\nNote that `bit-concurrency` is only tested on compilers that provide proper conformance for c++14 or above\n\nThe following compilers are currently being tested through continuous integration with [Travis](https://travis-ci.org/bitwizeshift/bit-concurrency) and [AppVeyor](https://ci.appveyor.com/project/bitwizeshift/bit-concurrency/)\n\n| Compiler              | Operating System                   |\n|-----------------------|------------------------------------|\n| g++ 6.3.0             | Ubuntu 14.04.3 TLS                 |\n| g++ 7.2.0             | Ubuntu 14.04.3 TLS                 |\n| clang++ 3.9.0         | Ubuntu 14.04.3 TLS                 |\n| clang++ 4.0.1         | Ubuntu 14.04.3 TLS                 |\n| clang xcode 7.3       | Darwin Kernel 15.6.0 (OSX 10.11.6) |\n| clang xcode 8.0       | Darwin Kernel 15.6.0 (OSX 10.11.6) |\n| clang xcode 8.1       | Darwin Kernel 16.1.0 (OSX 10.12.1) |\n| clang xcode 8.2       | Darwin Kernel 16.1.0 (OSX 10.12.1) |\n| clang xcode 8.3       | Darwin Kernel 16.6.0 (OSX 10.12.5) |\n| clang xcode 9.0       | Darwin Kernel 16.7.0 (OSX 10.12.6) |\n| Visual Studio 2017    | Windows Server 2016 (x64)          |\n\n\u003c!-- SECTION: License --\u003e\n\n## \u003ca name=\"license\"\u003e\u003c/a\u003eLicense\n\n\u003cimg align=\"right\" src=\"http://opensource.org/trademarks/opensource/OSI-Approved-License-100x137.png\"\u003e\n\nThe class is licensed under the [MIT License](http://opensource.org/licenses/MIT):\n\nCopyright \u0026copy; 2018 Matthew Rodusek\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitwizeshift%2Fbit-concurrency","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbitwizeshift%2Fbit-concurrency","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitwizeshift%2Fbit-concurrency/lists"}