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