Параллельное чтение и запись.

Тема в разделе "WASM.A&O", создана пользователем Yashin_Sergey, 2 июн 2008.

  1. Yashin_Sergey

    Yashin_Sergey Сергей

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    62
    Адрес:
    Москва
    Добрый день.

    Скажите пожалуйста, как будет выглядеть в плане качества реализации следующая схема:
    1. есть адрес памяти mem
    2. первая нить процесса пишет в указанную ячейку (mem = mem + x)
    3. вторая нить процесса читает из указанной ячейки mem

    Не будет ли между ними какого либо аппаратного конфликта, если обе нити работают в
    многоядерной(и/или многопроцессорной) архитектуре с общей памятью ?

    Спасибо.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Все равно же операции атомарные. Сначала один запишет, а потом другой прочитает, или наоборот. Они не будут выполнены совсем одновременно, as far as i remember.
    Другое дело, что полюбому это ничем хорошим не закончится, поскольку между потоками нужна синхронизация чтобы все было нормально. Но я так понимаю, вопрос заключался не в этом, а это просто лирическое отступление.

    ЗЫ. А что тема делает в алгоритмах?
    // ну допустим что алгоритм )
     
  3. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Поведение зависит от выравнивания. При выровненных данных операции записи атомарны. Остальные тонкости в манах в разделах о синхронизации на MP.
     
  4. Yashin_Sergey

    Yashin_Sergey Сергей

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    62
    Адрес:
    Москва
    Great

    ЗЫ. А что тема делает в алгоритмах?



    Вобще то это по моему мнению относится к алгоритму. Т.к. мной описан алгоритм взаимодействия двух потоков, его можно изменить, оспорить и т.п.
     
  5. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    В плане быстродействия очень даже может быть, особенно если два потока обращаются к одной и той же линейке кэша, поскольку по крайней мере L1 у разных ядер разные
     
  6. Yashin_Sergey

    Yashin_Sergey Сергей

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    62
    Адрес:
    Москва
    leo
    asmfan
    Great

    Спасибо.