Я хочу использовать встроенную функцию gcc __atomic_compare_exchange()
, но мне нужно, чтобы она немного отличалась от указанной, и я не уверен, что это возможно.
прототип функции:
__atomic_compare_exchange(type *ptr, type *expected, type *desired, bool weak, int success_memmodel, int failure_memmodel)
он атомарно сравнивает ptr
с expected
и записывает desired
в ptr
, если ptr
== expected
то, чего я хочу добиться, очень похоже, но мой expected
равен != NULL
, в основном я хочу проверить, является ли ptr != NULL
и, если это правда, записать desired
в ptr
.
это можно сделать?
вот gcc относительно его использования:
https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html