Я работаю над структурой данных без блокировки и пытаюсь использовать указатели CAS.
При использовании сравнения и обмена какие флаги мне следует передавать в компилятор?
Я получил лицензию на http://locklessinc.com/ распределитель памяти.
Я также использую NetBeans 7.
В настоящее время единственные флаги, которые у меня есть, находятся под компоновщиком -march = native -lllalloc.
Однако, когда я запускаю программу, у меня возникают странные проблемы с памятью.
Я думаю, что мне не хватает флага или двух ...
Также netbeans говорит, что «не может разрешить идентификатор __sync_bool_compare_and_swap», но все равно компилирует его.
У кого-нибудь есть идеи?
Структура данных:
struct Ambigous
{
short type;
union{
struct{
bool inCleanup;
KEY key;
VALUE value;
};
Ambigous* volatile list[MAIN_SIZE];//CHANGED ordering, still have netbeans error
};
};
Мой код сравнения и обмена
bool res= __sync_bool_compare_and_swap(&(local->list[pos]), current_node, new_node);
Как мне выделить память:
Ambigous *temp_spine = (Ambigous *) calloc(1,sizeof (Ambigous));