This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| * Асинхронность в Emacs Lisp на практике: от модели к надёжным паттернам | |
| ** Модель исполнения: почему в Emacs асинхронность выглядит так, а не иначе | |
| В основе Emacs — однопоточная модель исполнения с «глобальной блокировкой» интерпретатора Lisp. Это означает, что обычный Lisp‑код выполняется последовательно и не прерывается конкурентной работой другого Lisp‑кода. Асинхронные события (вывод процессов, сетевые данные, таймеры) обрабатываются в «точках ожидания»: когда Emacs ждёт ввода, перерисовки, данных от процессов, или когда вы явно вызываете функции ожидания. | |
| Такой дизайн приносит важные свойства. Он упрощает мышление: команда выполняется «атомарно», пользователь видит консистентное состояние буферов/окон, отладка предсказуемее. Он защищает редакторские структуры от гонок и убирает необходимость всюду ставить блокировки. Цена — отсутствие ускорения CPU‑задач «потоками Emacs Lisp» и необходимость явно уступать управление, чтобы асинхронные события исполнялись вовремя. Реальный параллелизм достигается че |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| # Formatting constants | |
| export BOLD=`tput bold` | |
| export UNDERLINE_ON=`tput smul` | |
| export UNDERLINE_OFF=`tput rmul` | |
| export TEXT_BLACK=`tput setaf 0` | |
| export TEXT_RED=`tput setaf 1` | |
| export TEXT_GREEN=`tput setaf 2` | |
| export TEXT_YELLOW=`tput setaf 3` |