Одной из первых вещей, о которых я подумал, когда прочитал это, был Stackless Python. Каналы в Go напоминают мне лот из Stackless Python, но это скорее всего потому, что (а) я использовал его и (б) язык / мысли, что они на самом деле пришли от никогда не трогал.
Я никогда не пытался использовать каналы в качестве IPC, но это, вероятно, потому что альтернатива, вероятно, намного безопаснее. Вот некоторый псевдокод:
program1
chan = channel()
ipc = IPCManager(chan, None)
send_to_other_app(ipc.underlying_method)
chan.send("Ahoy!")
program2
chan = channel()
recv_from_other_app(underlying_method)
ipc = IPCManager(chan, underlying_method)
ahoy = chan.recv()
Если вы используете традиционный метод IPC, у вас могут быть каналы на каждой стороне, которые обертывают их связь поверх него. Это приводит к некоторым проблемам в реализации, о которых я даже не могу думать, как справиться, и, вероятно, к нескольким неожиданным условиям гонки.
Однако я согласен; способность общаться через процессы с использованием одинаковой гибкости каналов Go будет феноменальной (но я боюсь, что она нестабильна).
Однако простое подключение розетки с каналами на каждой стороне дает вам практически все преимущества.