gpt4 book ai didi

c - 函数回调和进程间通信是否相同?

转载 作者:太空狗 更新时间:2023-10-29 17:16:30 27 4
gpt4 key购买 nike

几天前,在一次采访中有人问我一个问题,

Are  function callback in C and interprocess communication are same?

我在那个问题上有点中立。因为我进退两难。在 IPC 中,如果我们看到进程只是一个函数,那么我们最后在进程与进程之间进行通信。这里一个函数调用另一个函数。在函数回调中,我们再次使用函数指针,即一个函数使用地址调用另一个函数。所以只是想知道虽然它们并不完全相同,但有什么区别?

最佳答案

不,不是真的。

函数回调是将一个函数的地址(或其他标识符)传递给另一个函数,以便它可以出于某种原因进行回调。

经典的例子就是C标准库的qsort函数。您传入一个指向数组(及其大小)的指针,以及一个比较函数。 qsort 函数然后使用该比较函数(回调)来决定列表中任意两个元素中哪一个更大,以便它可以按顺序排列它们。

IPC则是进程间通信的一种手段,如共享内存、管道、信号量等。

某些 IPC 机制可能使用 回调,但这绝不是必需的。例如,套接字不使用回调,它们只允许用户调用 readwrite

与共享内存类似,您附加到内存块并像“常规”内存一样简单地访问它们,只是附加到该内存的所有进程都会感受到这种影响。

一种确实使用回调的方法是 ONC RPC(或 Sun RPC)。它运行一个服务器,该服务器等待网络上的客户端调用并将它们传递给预配置的客户端功能。可以找到更多详细信息here .

但是,即便如此,我还是不愿意将其称为回调,因为它实际上是在编译时配置的。 “适当的”回调往往在运行时完成。

关于c - 函数回调和进程间通信是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10596437/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com