Как программировать для целевой аудитории инвалидов или пожилых людей?

Как sblundy, на который указывают, если все объекты неизменны, только для чтения, Вы не должны волноваться о блокировке, однако, это означает, что Вам, вероятно, придется скопировать, возражает много. Копирование обычно включает malloc и блокировку использования malloc для синхронизации выделений памяти через потоки, таким образом, неизменные объекты могут купить Вас меньше, чем Вы думаете (malloc, саму масштабируется скорее плохо, и malloc медленный ; если Вы делаете много malloc в производительности критический раздел, не ожидайте хорошую производительность).

, Когда только необходимо обновить простые переменные (например, интервал на 32 или 64 бита или указатели), выполните просто операции сложения или операции вычитания на них или просто подкачайте значения двух переменных, большая часть предложения платформ "атомарные операции" для того (далее, GCC предлагает их также). Атомарный не то же как ориентированное на многопотоковое исполнение . Однако атомарный удостоверяется, что, если один поток пишет 64 битовых значения в ячейку памяти, например, и другой поток чтения от него, читающий или получает значение перед операцией записи или после операции записи, но никогда поврежденный промежуток значения операция записи (например, тот, где первые 32 бита уже являются новым, последние 32 бита являются все еще старым значением! Это может произойти, если Вы не используете атомарный доступ на такой переменной).

Однако, если у Вас есть структура C с 3 значениями, которые хотят обновить даже при обновлении всех трех с атомарными операциями это три независимых операции, таким образом читатель мог бы видеть структуру с одним значением, уже являющимся обновлением и два не быть обновленным. Здесь Вам будет нужна блокировка, если необходимо гарантировать, читатель, любой видит все значения в структуре, являющейся или старым или новыми значениями.

Один способ заставить блокировки масштабироваться намного лучше использует блокировки R/W. Во многих случаях обновления данных являются довольно нечастыми (операции записи), но доступ к данным является очень частым (чтение данных), думайте о наборах (хеш-таблицы, деревья). В этом случае блокировки R/W купят Вас огромное увеличение производительности, поскольку много потоков могут содержать блокировку чтения одновременно (они не заблокируют друг друга), и только если один поток хочет блокировку записи, все другие потоки заблокированы в течение времени, обновление выполняется.

лучший способ избежать проблем потока не состоит в том, чтобы совместно использовать данные через потоки. Если каждый поток имеет дело большую часть времени с данными, никакой другой поток не имеет доступ к, Вам не будет нужна блокировка для тех данных вообще (также никакие атомарные операции). Так попытайтесь совместно использовать как можно меньше данные между потоками. Тогда Вам только нужен быстрый способ переместить данные между потоками, если Вы действительно имеете к (ITC, Коммуникация Потока Интера). В зависимости от Вашей операционной системы, платформы и языка программирования (к сожалению, Вы не сказали нам ни один из них), могли бы существовать различные мощные методы для ITC.

И наконец, другой прием для работы с совместно используемыми данными, но без любой блокировки должен удостовериться, что потоки не получают доступ к тем же частям совместно используемых данных. Например, если два потока совместно используют массив, но каждый будет только когда-либо получать доступ даже, другие единственные нечетные индексы, Вам не нужна никакая блокировка. Или если и доля тот же блок памяти и s одно единственное использование верхняя половина из него, другой одно единственное более низкое, Вам не нужна никакая блокировка. Хотя это не сказано, что это приведет к хорошей производительности; особенно не на многоядерных центральных процессорах. Операции записи одного потока к этому обменялись данными (выполнение одного ядра) мог бы вынудить кэш быть сброшенным для другого потока (работающий на другом ядре), и эти очистки кэша часто являются горлышком бутылки для приложений мультипотока, работающих на современных многоядерных центральных процессорах.

5
задан Mark Rushakoff 27 November 2009 в 03:35
поделиться

4 ответа

Ключевое слово, которое вы ищете, - Доступность : С веб-сайта:

Первое и, возможно, самое важное правило доступности Интернета. Не все используют последнюю версию Internet Explorer со всеми надстройками и программами, которые могут потребоваться для вашего веб-сайта. Различные технологии просмотра, каждая со своими требованиями к доступности, могут включать:

4
ответ дан 18 December 2019 в 13:15
поделиться

Попросите некоторых старожилов опробовать ваше приложение в процессе его сборки. Поощряйте их рассказывать о том, что они делают, когда они это используют, и описывать любые проблемы. Поступая так, вы получите хорошее представление о типах проблем, которые могут возникнуть, и сможете решать их на раннем этапе.

4
ответ дан 18 December 2019 в 13:15
поделиться

Инициатива по обеспечению доступности Интернета (WAI) определенно заслуживает внимания, если вы разрабатываете веб-сайты.

2
ответ дан 18 December 2019 в 13:15
поделиться

Ключевое слово, которое вы ищете, - Доступность : С сайта:

Первое и, пожалуй, самое важное правило доступности Интернета. Не все используют последнюю версию Internet Explorer со всеми надстройками и программами, которые могут потребоваться для вашего веб-сайта. Различные технологии просмотра, каждая со своими требованиями к доступности,

  • Изображения - в виде текста ALT
  • JavaScript - через тег
  • Flash - с эквивалентами HTML
  • Аудио и видео - с использованием субтитров или письменных расшифровок
4
ответ дан 18 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: