synchronous / asynchronous 的翻译导致的误解?

synchronous / asynchronous 为何翻译成 同步/异步?

用一段解释为例:
「同步」,就是调用某个东西时,调用方得等待这个调用返回结果才能继续往后执行。
「异步」,和同步相反——调用方不等待调用结果,而是在调用发出后调用者可用继续执行后续操作。

我怎么感觉这两个概念和他们自身的“字面意思”完全相反啊?
我做了一张图:
sync&async

起初我怎么都理解不了,琢磨+google,最后得出结论:是翻译的太反人类了。

如果换用另一对词来表意是不是更好??
synchronous ==「同轨」,就一个轨道,你占用了我就得等着,你干完了我再干。
asynchronous ==「异轨」,有无数多条轨道,你干你的不耽误我同时干活儿。
「轨」= 时间
我能这么理解吗???
阅读 3.3k
2 个回答

不知道题主是不是科班出身,如果是计算机相关专业的话,应该有学过一门通信原理的专业课(可能不叫这个名,但讲的内容是信号啊通信啊这些东西)。

在数据传输过程中,有同步和异步两种模式,同步即阻塞,异步即非阻塞。

所谓同步通信(阻塞),是指 Sender 发出数据后,等 Receiver 发回响应以后,Sender 才继续发下一个数据包。之所以叫“同步”,是因为真的就是字面意思,接收端时钟频率和发送端时钟频率要相同,这样才能做到帧同步。

所谓异步通信(非阻塞),是指 Sender 发出数据后,并不关心 Receiver 是否发回响应,就继续发下一个数据包。


编程中沿用了同样的概念(虽然阻塞/非阻塞、与同步/非同步已经不再混为一谈,但这里不展开讲了,省的你更懵)。只不过在通信中的“发出数据”,变成了调用方法、发起请求等等操作,本质是一样的。


如果你对通信中提到的时钟频率、帧同步等概念很陌生,建议自行恶补通信原理的相关知识。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏