如果通讯方式一样,比如都用共享内存,那么多线程和多进程间的主要区别就只有程序崩溃时的隔离特性,多线程一崩溃就全完蛋,多进程只会影响一部分。
如果还考虑软件工程意义,不同进程通常意味着不同的程序,甚至不同的项目,操作风险会降低,这是很多交易系统做两个进程而不是一个进程的重要原因,风控进程和策略进程软件工程意义上隔离,改策略不会增加乱报单的可能性。
这两点考虑到了之后,进程数越少越好。不同逻辑流(线程)间的同步越少越好。低计算量下,最低延迟通常是单线程逻辑得到的。
做低延迟都需要考虑I/O blocking到被唤醒执行所耗费的时间,用Socket等需要syscall和context switch的当然更应该能避免则避免了。
当然这一切都是基于高频交易,更准确的说是低延迟交易领域。不是所有电子交易系统都处于这一领域,其他领域的架构根据不同的需求可能完全不同。
— 完 —
本文作者:卢旺杉
【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)
此问题还有 8 个回答,查看全部。
延伸阅读:
什么是高频交易系统?
程序化交易、算法交易、量化投资、高频交易、统计套利,这些名词之间的关系是怎么样的?