<mutex>: change mutex to be an SRWLOCK
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 11.1k
- Forks
- 1.7k
- Avg merge
- 4d 15h
- Merged PRs (30d)
- 22
Description
Description
std::mutex is currently powered by ConcRT to support Windows XP. As a result the size of mutex is too big to fit in a cache line.
When XP support can be dropped, the size can be reduced to sizeof(void*) by changing mutex to be an SRWLOCK, which is the highest performance lock provided by Windows.
Semi-duplicate description
- From #654
<mutex>: Implementmutexandrecursive_mutexon SRW Lock. Support recursion only onrecursive_mutex- correctness (
constexprconstruction) - no undesired strengthening (recursion on non-recursive deliberately not behaving correctly)
- performance (no dynamic API binding => no control flow guard overhead; no recursion support overhead)
- correctness (
Additional context
See also: Developer Community DevCom-334696 and Microsoft-internal VSO-685103 / AB#685103.
vNext note: Resolving this issue will require breaking binary compatibility. We won't be able to accept pull requests for this issue until the vNext branch is available. See #169 for more information.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the <mutex> implementation and the vNext guidance in #169; the issue names no source file or test. Work is gated on the vNext branch, and done means using SRWLOCK while preserving constexpr construction, limiting recursion to recursive_mutex, and accepting the stated binary-compatibility break.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- operating-systems
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100