函数回调和进程间通信是一样的吗?

问题描述 投票:0回答:3

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

Are  function callback in C and interprocess communication are same?

我在这个问题上有点中立。因为我陷入了困境。在 IPC 中,如果我们看到进程只不过是一个函数,那么我们最终会在进程之间进行通信。这里一个函数调用另一个函数。在函数回调中,我们再次使用

function pointer
,即一个函数使用地址调用另一个函数。 所以只是想知道虽然它们不完全相同,但有什么区别?

c operating-system function-pointers inter-process-communicat
3个回答
12
投票

不,不是真的。

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

经典的例子是C标准库的

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

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

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

read
write

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

使用回调的一种是 ONC RPC(或 Sun RPC)。它运行一个服务器,等待网络上的客户端调用,并将它们传递给预先配置的客户端功能。更多详细信息可以在这里找到。 但是,即使如此,我也会犹豫是否将其称为回调,因为它实际上是在编译时配置的。 “正确的”回调往往在运行时完成。


7
投票


0
投票

函数回调:函数回调是指一种编程技术,其中一个函数作为参数传递给另一个函数,稍后作为回调调用。然后,主函数可以调用回调函数来在执行过程中的某个时刻执行特定的操作或任务。函数回调通常用于事件处理、异步编程和自定义行为。

进程间通信(IPC):进程间通信是指允许操作系统中不同进程相互通信并共享数据的机制。 IPC 使流程能够交换信息、同步其活动并协作完成任务。 IPC 可以采用多种形式,例如共享内存、消息传递、套接字、管道和信号等。

© www.soinside.com 2019 - 2024. All rights reserved.