Details
-
Suggestion
-
Resolution: Done
-
P3: Somewhat important
-
4.6.3
-
None
Description
Today i try write variant function std::call_once on Qt, but i can't write fast version because QAtomicInt doesn't have FAST atomic methods like:
std::atomic<T>::load(std::memory_order_relaxed); std::atomic<T>::load(std::memory_order_consume); std::atomic<T>::load(std::memory_order_acquire); std::atomic<T>::load(std::memory_order_seq_cst); std::atomic<T>::store(value, std::memory_order_release); std::atomic<T>::store(value, std::memory_order_relaxed); std::atomic<T>::store(value, std::memory_order_seq_cst);
Instead it i used FetchAndStoreAcquire (Load) and FetchAndStoreRelease (Store). My algorithm 15 sec on 1 billion operations, std::call_once - 9 sec.
And why QAtomicInt doesn't have atomic operators like "operator=" and "operator int() const"?