shared_futex | Fast , shared , upgradeable , non-recursive and non-fair mutex

 by   ssteinberg C++ Version: Current License: BSD-3-Clause

kandi X-RAY | shared_futex Summary

kandi X-RAY | shared_futex Summary

shared_futex is a C++ library. shared_futex has no bugs, it has no vulnerabilities, it has a Permissive License and it has low support. You can download it from GitHub.

Fast, shared, upgradeable, non-recursive and non-fair mutex with support for x86 hardware lock elision via Transactional Synchronization Extensions (TSX). Written in modern cross-platform c++17. In active development. shared_futex encourages a safe RAII interface. Similiarly shared_futex can be locked for shared access. While exclusive locks are mutually exclusive with all other holders, mutiple shared holders are allowed to access the guarded critical section simultaneously. shared_futex can also be locked in upgradeable mode, which allows later to upgrade the lock to an exclusive lock. Upgradeable holders are mutually exclusive with other upgradeable and exclusive locks but not with shared holders. This invariant allows concurrency between shared and upgradeable lockers and, more importantly, ensures that the state of a guarded resource does not change between the upgradeable acquisition and the upgrade to an exclusive lock. In addition, Lock acquisitions attempts can be made with a given time-out. Or in a non-blocking manner via std::try_to_lock. Lock guards can also be manipulated manually. Lock guards meet the requirements of BasicLockable, Lockable and TimedLockable therefore can be used in conjunction with standard library utilities. E.g. avoiding deadlocks when locking multiple mutexes can be done via the standard library's std::lock. Likewise lock guards are default constructible and also meet the requirements of MoveConstructible and MoveAssignable but not of CopyConstructible or CopyAssignable. Therefore lock guards can be safely moved around, swapped and empty assigned via empty brace initialization. Locks can also be adopted. shared_futex default constructor is constexpr therefore a shared_futex is statically initialized making it safe to lock a mutex in the constructor of any static or global object. See c++ initialization order of non-local variables. When an intial lock attempt fails the locking protocol keeps retrying until either a timeout has been reached or lock was successfully acquired. Between iterations a backoff policy is executed. The backoff policy can spin, yield or park the thread.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              shared_futex has a low active ecosystem.
              It has 18 star(s) with 0 fork(s). There are 2 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              shared_futex has no issues reported. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of shared_futex is current.

            kandi-Quality Quality

              shared_futex has no bugs reported.

            kandi-Security Security

              shared_futex has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              shared_futex is licensed under the BSD-3-Clause License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              shared_futex releases are not available. You will need to build from source code and install.
              Installation instructions are not available. Examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of shared_futex
            Get all kandi verified functions for this library.

            shared_futex Key Features

            No Key Features are available at this moment for shared_futex.

            shared_futex Examples and Code Snippets

            No Code Snippets are available at this moment for shared_futex.

            Community Discussions

            No Community Discussions are available at this moment for shared_futex.Refer to stack overflow page for discussions.

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install shared_futex

            You can download it from GitHub.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/ssteinberg/shared_futex.git

          • CLI

            gh repo clone ssteinberg/shared_futex

          • sshUrl

            git@github.com:ssteinberg/shared_futex.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link