这个异步代码将如何在Python和C中执行?
假设我有一个简单的脚本,下面有两个函数。在调用callback_func时,我假设它只在单数基础上运行。也就是说,不会有两个事件同时通过代码块。对吗?此外,如果回调函数以单数形式运行,则消息传递服务本身必须执行一些缓冲,以便不会丢失消息,而缓冲取决于发起事件的服务。这也对吗这个异步代码将如何在Python和C中执行?,python,c,asynchronous,Python,C,Asynchronous,假设我有一个简单的脚本,下面有两个函数。在调用callback_func时,我假设它只在单数基础上运行。也就是说,不会有两个事件同时通过代码块。对吗?此外,如果回调函数以单数形式运行,则消息传递服务本身必须执行一些缓冲,以便不会丢失消息,而缓冲取决于发起事件的服务。这也对吗 def callback_func(event): # Can be called anytime def main_func(): # Sets up a connection to a messagin
def callback_func(event):
# Can be called anytime
def main_func():
# Sets up a connection to a messaging service
那么,如果我添加一个send_func呢?如果我收到一条消息,但我有三条要出去,那么当它在发送消息时被调用时,send_func
将如何处理这种情况?这种情况是否由Python解释器处理
def send_func(event):
# Can be called anytime
def callback_func(event):
# Can be called anytime
def main_func():
# Sets up a connection to a messaging service
最后,如果我将语言更改为C,那么上述问题的答案如何更改?混淆了两个概念(异步!=并发)
异步并不意味着并发,并发并不意味着异步。这些术语在语义上被初学者(和一些专家)弄糊涂了,但它们是不同的概念
你可以有一个没有另一个,或者有时两者都有
异步意味着你不等待某件事,它并不意味着它在其他事情发生时发生,只是它可能在以后发生
并发意味着在同一时间发生多个完全独立的事情,这些事情可以是同步的,同时是孤立的和并发的
具体实施
是单线程的,不需要担心返回。允许并发,如果使用了这些功能,则需要锁定机制
C本身也是单线程的,除非您专门启动新线程,否则您需要一个锁定机制。我想补充一点,除了“服务”之外,还有许多地方可以进行消息缓冲。在较低的级别上,我相信操作系统会在套接字上缓冲传入和传出字节。非并发但异步的示例: