Comments (2)
Technically ConcurrentHashMap reads are indeed lock-free (and wait-free). An operation like find()
will does not need to lock a bucket.
However the operator[]
is not a read-only operation. Similar to a regular std::unordered_map
, doing a auto& value = map[5];
when 5
doesn't exist would result in creating an entry for key = 5 with default constructing it's value, and then returning a reference to that value. This is a write-oriented operation, and hence is NOT lock-free.
An alternative would be to use map.at(5)
which is indeed lock-free. Most (all?) const
member functions of ConcurrentHashMap
are lock-free
from folly.
Technically ConcurrentHashMap reads are indeed lock-free (and wait-free). An operation like
find()
will does not need to lock a bucket.However the
operator[]
is not a read-only operation. Similar to a regularstd::unordered_map
, doing aauto& value = map[5];
when5
doesn't exist would result in creating an entry for key = 5 with default constructing it's value, and then returning a reference to that value. This is a write-oriented operation, and hence is NOT lock-free.An alternative would be to use
map.at(5)
which is indeed lock-free. Most (all?)const
member functions ofConcurrentHashMap
are lock-free
Thanks your reply, I also read the code find the answer. Issuing this question verifies my thought. Thanks!
from folly.
Related Issues (20)
- coroutine stack overflows
- use of Expected triggers warning
- MPMCQueue blockingRead() doesn't return even with a subsequent write() HOT 1
- packit PR for rpm-build copr build failures, please take a look
- What is the expected behavior of Future::thenInline?
- [build] Build error: link logging_example fail HOT 1
- Possible race condition in ThreadPoolExecutor HOT 1
- `small_vector.MoveAndCopyTrivial` fails with GCC 12.3.0 (no problem with GCC 9.x 10.x 11.x 13.x) HOT 1
- folly::ConcurrentHashMap crashes under high contention HOT 1
- [macOS] `AsyncFdSocket.h: error: 'reinterpret_cast<char*>(15)' is not a constant expression` and other related build errors
- error C2382: 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::_Eos': redefinition; different exception specifications HOT 7
- undefined reference to `folly::f14::detail::F14LinkCheck HOT 1
- ‘scm_timestamping’ does not name a type
- Folly fails to build on Windows 11 with build.bat and getdeps.py scripts.
- how to enable folly with sse4.2
- Integrate with google/oss-fuzz for continuous fuzz testing?
- A question about coro::Mutex implementation
- [powerpc] Some build errors and test results: issues to be addressed – threading, endianness HOT 22
- Build failure with Fedora 40's GCC 14.0.1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from folly.