標題幾乎傳達的所有相關信息,但這裏有一個最小的攝製:鏈接並行線程禁用無鎖的shared_ptr實現
#include <atomic>
#include <cstdio>
#include <memory>
int main() {
auto ptr = std::make_shared<int>(0);
bool is_lockless = std::atomic_is_lock_free(&ptr);
printf("shared_ptr is lockless: %d\n", is_lockless);
}
與下列編譯器選項編譯這就產生了一個無鎖shared_ptr
實現:
g++ -std=c++11 -march=native main.cpp
雖然這並不:
g++ -std=c++11 -march=native -pthread main.cpp
GCC
版本:5.3.0
(在Linux上,使用libstdc++
)在多臺機器上進行測試,這些機器應具有必要的原子指令以使其工作。
有沒有辦法強制實現無鎖(我需要無鎖版本,無論性能如何)?