Настройка ЯЗЫКА для возвышенного текста из Unity

На теоретическом уровне они не отличаются семантически. Можно реализовать взаимное исключение с помощью семафоров или наоборот (см. здесь для примера). На практике реализация отличается, и они предлагают немного отличающиеся услуги.

практическое различие (с точки зрения системных служб, окружающих их), - то, что реализация взаимного исключения нацелена на то, чтобы быть более легким механизмом синхронизации. В оракуле - говорят, взаимные исключения известны как , фиксаторы и семафоры известны, поскольку ожидает .

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

А типичная взаимоисключающая реализация имеет процесс или поток, выполняющий инструкцию теста-и-набора и оценивающий, установило ли что-либо еще взаимное исключение. Ключевой пункт здесь - то, что нет никакого взаимодействия с планировщик , таким образом, мы понятия не имеем (и не заботьтесь), кто установил блокировку. Тогда мы или бросаем наш интервал времени и делаем попытку его снова, когда задача перенесена, или выполнитесь спин-блокировка . Спин-блокировка является алгоритмом как:

Count down from 5000:
     i. Execute the test-and-set instruction
    ii. If the mutex is clear, we have acquired it in the previous instruction 
        so we can exit the loop
   iii. When we get to zero, give up our time slice.

, Когда мы закончили выполнять наш защищенный код (известный как критический раздел ) мы просто обнуляем взаимоисключающее значение или независимо от того, что означает 'ясный'. Если несколько задач пытаются получить взаимное исключение они следующая задача, которая, оказывается, планируется после того, как взаимное исключение выпущено, получит доступ к ресурсу. Обычно Вы использовали бы взаимные исключения для управления синхронизируемым ресурсом, где эксклюзивный доступ только необходим в течение очень коротких периодов времени, обычно для создания обновления структуры совместно используемых данных.

семафор А является синхронизируемой структурой данных (обычно использующий взаимное исключение), который имеет количество и некоторые обертки системного вызова, которые взаимодействуют с планировщиком в немного большей глубине, чем взаимоисключающие библиотеки были бы. Семафоры увеличены и постепенно уменьшены и привыкли к [1 110] блок задачи, пока что-то еще не готово. См. проблема Производителя/Потребителя для простого примера этого. Семафоры инициализируются к некоторому значению - двоичный семафор является просто особым случаем, где семафор инициализируется к 1. Регистрация на семафор имеет эффект пробуждения ожидающего процесса.

А основной семафорный алгоритм похож:

(somewhere in the program startup)
Initialise the semaphore to its start-up value.

Acquiring a semaphore
   i. (synchronised) Attempt to decrement the semaphore value
  ii. If the value would be less than zero, put the task on the tail of the list of tasks waiting on the semaphore and give up the time slice.

Posting a semaphore
   i. (synchronised) Increment the semaphore value
  ii. If the value is greater or equal to the amount requested in the post at the front of the queue, take that task off the queue and make it runnable.  
 iii. Repeat (ii) for all tasks until the posted value is exhausted or there are no more tasks waiting.

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

РЕДАКТИРОВАНИЕ: Как evan справедливо указал, спин-блокировки замедлят единственную машину процессора. Вы только использовали бы спин-блокировку на многопроцессорном поле, потому что на единственном процессоре процесс, содержащий взаимное исключение, никогда не будет сбрасывать его, в то время как другая задача работает. Спин-блокировки только полезны на многопроцессорных архитектурах.

2
задан 18.05.2020, 04:10

3 ответа

Я установил sublimetext, использование ppa метода и Package control с "простым методом" описало здесь , это работает из поля с (единицей) Ubuntu 13.10.

Для репродуцирования проблемы я пытался вынудить LANG-C запустить sublimetext путем изменения .desktop файла. Я думаю, что Вы могли попробовать ту же тонкую настройку для запуска его к этому времени принуждение LANG=en_US.UTF-8:

sudo gedit /usr/share/applications/sublime-text.desktop

И копия следующие строки в файл:

[Desktop Entry]
Version=1.0
Type=Application
Name=Sublime Text
GenericName=Text Editor
Comment=Sophisticated text editor for code, markup and prose
Exec=bash -c "LANG=en_US.UTF-8 /opt/sublime_text/sublime_text %F"
Terminal=false
MimeType=text/plain;
Icon=sublime-text
Categories=TextEditor;Development;Utility;
StartupNotify=true
Actions=Window;Document;

X-Desktop-File-Install-Version=0.21

[Desktop Action Window]
Name=New Window
Exec=bash -c "LANG=en_US.UTF-8 /opt/sublime_text/sublime_text -n"
OnlyShowIn=Unity;

[Desktop Action Document]
Name=New File
Exec=bash -c "LANG=en_US.UTF-8 /opt/sublime_text/sublime_text --command new_file"
OnlyShowIn=Unity; 
0
ответ дан 18.05.2020, 04:10
  • 1
    I' ll примеряют 12,04 систем также, Вы могли детализировать, какой метод установки Вы использовали? (ppa, .deb, tar.gz...) и для сублимата и для управления пакетом. – Matt Milner 18.05.2020, 04:10
  • 2
    Я пытался использовать это .desktop файл, но я все еще получаю ту ошибку. Если помогает, что я использую 12.04 – Matt 18.05.2020, 04:11
  • 3
    Я добавил детали установки... Я могу попробовать ppa метод, чтобы видеть, изменяет ли это вещи. – Matt 18.05.2020, 04:11

У меня просто было это под Ubuntu 14.04 LTS., мой ЛЕНГ установлен в масштабе всей системы, но диспетчер пакетов sublimetext 3, не взяв его.

я просто сделал обходное решение и поместил LANG=en_US.UTF-8 перед путем приложения в его средстве запуска значка.

0
ответ дан 18.05.2020, 04:11

У меня была точно та же проблема с sublimeT3. Сначала на терминале я выполнил следующую команду:

$echo $LOCAL

И вывод была пустая строка.

Следующий я работал:

$locale

это было выводом:

LANG=
LANGUAGE=en_US
LC_CTYPE=POSIX
LC_NUMERIC=POSIX
LC_TIME=POSIX
LC_COLLATE=POSIX
LC_MONETARY=POSIX
LC_MESSAGES=POSIX
LC_PAPER=POSIX
LC_NAME=POSIX
LC_ADDRESS=POSIX
LC_TELEPHONE=POSIX
LC_MEASUREMENT=POSIX
LC_IDENTIFICATION=POSIX
LC_ALL=POSIX

я пытался сбросить локали с некоторыми ответами, учитывая [1 110] здесь , но все было неудачно, каждый раз, когда команда "локали" дала тот же вывод. Даже мой /etc/default/locale, казалось, был правильным:

$cat /etc/default/locale

Вывод:

LANG=en_US.UTF-8
LC_NUMERIC="es_CO.UTF-8"
LC_TIME="es_CO.UTF-8"
LC_MONETARY="es_CO.UTF-8"
LC_PAPER="es_CO.UTF-8"
LC_NAME="es_CO.UTF-8"
LC_ADDRESS="es_CO.UTF-8"
LC_TELEPHONE="es_CO.UTF-8"
LC_MEASUREMENT="es_CO.UTF-8"
LC_IDENTIFICATION="es_CO.UTF-8"

из-за этого я задался вопросом, переопределяло ли, возможно, что-то переменные среды. Мой файл .pam_environment , казалось, был корректен:

$cat .pam_environment

Вывод:

LANGUAGE=en_US:en
LANG=en_US.UTF-8
LC_NUMERIC=es_CO.UTF-8
LC_TIME=es_CO.UTF-8
LC_MONETARY=es_CO.UTF-8
LC_PAPER=es_CO.UTF-8
LC_NAME=es_CO.UTF-8
LC_ADDRESS=es_CO.UTF-8
LC_TELEPHONE=es_CO.UTF-8
LC_MEASUREMENT=es_CO.UTF-8
LC_IDENTIFICATION=es_CO.UTF-8
PAPERSIZE=letter

, Таким образом, я выполнил следующую команду, которая дала мне ключ к разгадке того, что продолжалось:

$cat .bashrc | grep LANG

Здесь вывод:

unset LANG

я не знаю, когда или как, но я закончил с двумя строками на моем .bashrc, который переопределил значение переменных "локали". Я не вставляю целый файл удара, но две ключевых строки были ими:

unset LANG
export LC_ALL=POSIX

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

0
ответ дан 18.05.2020, 04:12

Теги

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