__transaction_atomic без поддержки транзакционной памяти

Я просто компилировал код C / C ++, используя __transaction_atomic, но произошла ошибка компилятора

  • [Error] __transaction_atomic' without transactional memory support enabled

Код:

#include <stdio.h>
int main()
{
    int i = 0;
    __transaction_atomic
    {
        i++;
    }
    return 0;
}

Как в этом разобраться? Мой компилятор - GCC 4.9


person Community    schedule 24.12.2015    source источник
comment
Вам, наверное, понадобится -fgnu-tm   -  person Mats Petersson    schedule 24.12.2015


Ответы (1)


Вы должны скомпилировать код с включенной поддержкой транзакционной памяти. Отсюда

Компиляция программы TM с помощью GCC Чтобы включить поддержку TM, в командную строку компиляции необходимо добавить директиву компилятора '-fgnu-tm'. Пример: gcc -Wall -fgnu-tm -O3 -o ll ll.c Обратите внимание, что при уровне оптимизации 0 (-O0) некоторые из оптимизаций TM отключены (RaR, RaW, RfW, WaR, WaW, оптимизированные барьеры памяти стека).

person ForEveR    schedule 24.12.2015