Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个异步代码将如何在Python和C中执行?_Python_C_Asynchronous - Fatal编程技术网

这个异步代码将如何在Python和C中执行?

这个异步代码将如何在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

假设我有一个简单的脚本,下面有两个函数。在调用callback_func时,我假设它只在单数基础上运行。也就是说,不会有两个事件同时通过代码块。对吗?此外,如果回调函数以单数形式运行,则消息传递服务本身必须执行一些缓冲,以便不会丢失消息,而缓冲取决于发起事件的服务。这也对吗

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本身也是单线程的,除非您专门启动新线程,否则您需要一个锁定机制。

我想补充一点,除了“服务”之外,还有许多地方可以进行消息缓冲。在较低的级别上,我相信操作系统会在套接字上缓冲传入和传出字节。

非并发但异步的示例: