Информация об изменениях

Сообщение Re[5]: DCLP. Паттерн или анти-паттерн? от 13.04.2018 8:03

Изменено 13.04.2018 8:10 okman

Re[5]: DCLP. Паттерн или анти-паттерн?
Здравствуйте, dead0k, Вы писали:

D>использование volatile в c/c++ для решения проблем многопоточности — антипаттерн.


И какие альтернативы volatile в C? Или в старых версиях C++, где нет atomic?
Re[5]: DCLP. Паттерн или анти-паттерн?
Здравствуйте, dead0k, Вы писали:

D>использование volatile в c/c++ для решения проблем многопоточности — антипаттерн.


И какие альтернативы volatile в C? Или в старых версиях C++, где нет atomic?

Вот приведу тогда стандартный пример "антипаттерна":
int g_data_ready;
data * g_data;

void consumer_thread(void)
{
    while (!g_data_ready) {}
    consume_data(g_data);
}

void producer_thread(void)
{
    g_data = ...
    g_data_ready = 1;
}

Без volatile этот код правильно работать не будет.