Russian Qt Forum
Май 19, 2024, 12:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 3 4 [5]   Вниз
  Печать  
Автор Тема: Потокобезопасный кэш  (Прочитано 29841 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #60 : Февраль 14, 2011, 13:35 »

Собственно такие ошибки сразу видно, нельзя мешать атомарный доступ с обычным. Но это так, придирки, гораздо интереснее вот что: зачем вообще нужно WRITE_PENDING? Почему нельзя так:
Код
C++ (Qt)
...
        m_data = tmp;           //tmp is ready, assign m_data to it
...
 
А разве это присваивание атомарно?  Улыбающийся (возможно и да, но это не обещается). А вообще конечно можно, но получается очень неудобно: текста в LoadPage довольно много и все время нужно помнить что mData надо держать = 0. 
Записан
brankovic
Гость
« Ответ #61 : Февраль 14, 2011, 14:26 »

А разве это присваивание атомарно?  Улыбающийся (возможно и да, но это не обещается).

Конечно запись слова атомарна. Но даже если нет, проще сделать атомарное m_data += tmp, чем городить огород с WRITE_PENDING. Хотя бы потому, что здесь одна операция вместо 2х. Атомарные операции довольно дорогая штука. Итого, WRITE_PENDING не нужен.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #62 : Февраль 14, 2011, 16:04 »

Атомарные операции довольно дорогая штука. Итого, WRITE_PENDING не нужен.
Дорогие по сравнению с записью/чтением на диск?  Улыбающийся Ладно - непринципиально. А вот поиск кандидата на вытеснение - не мешало бы улучшить. А то линейный проход, пусть и быстрый, но по тысячам страниц - никак не гуд  Я даже др. тему завел http://www.prog.org.ru/index.php?topic=16335.msg108525#msg108525

Но энтузиазма не наблюдается (как обычно когда этого нет в Асыстенте)
Записан
Страниц: 1 ... 3 4 [5]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.064 секунд. Запросов: 19.