Я использую process-send-string
для отправки данных в соединение с сокетом , но меня не устраивает эффект от этой функции. Грубо говоря, вызов (process-send-string «foo»)
может закончиться отправкой «bar»
, а затем «foo»
, как объяснено ниже.
Как указали специалисты по сопровождению Emacs, код C строки process-send-string
вызывает функцию wait_reading_process_output
(даже до фактического написания чего-либо), которая может запускать таймеры, которые в Turn может вызвать process-send-string
, и между такими вложенными вызовами не применяется никакого порядка.
Это делает практически невозможным реализацию протокола RPC, который предназначен для использования хуками, вызываемыми в неконтролируемое время. Итак, мой вопрос: как мы могли бы создать атомарный "синхронизированный" пишущий примитив для этой цели?