Ich möchte wissen, wie compare_and_swap in C++ 11 zu implementieren. Hier ist, was ich versucht:Wie implementiert man CAS in C++ 11
template<typename T>
T compare_and_swap(atomic<T>& reg,T newVal)
{
bool success = false;
T oldVal;
do
{
oldVal = reg.load();
success = reg.compare_exchange_weak(oldVal,newVal);
}while(!success);
return oldVal;
}
Gibt es einen besseren Weg, dies zu implementieren? Diese
Sie sollten versuchen, in http://codereview.stackexchange.com/ – Raistmaj
zu fragen compare_exchange macht bereits den Austausch, Sie brauchen Ihren Wrapper überhaupt nicht. – Mat
@Mat negativ, compare_exchange würde sicherlich Codezeilen in einigen Situationen hinzufügen. Situation, die Semantik von compare_and_swap viele Male –
AntiMoron