Wayland API中串行参数的用途是什么?

时间:2016-03-25 20:06:36

标签: c wayland

我最近一直在使用Wayland协议,许多功能都包含unit32_t serial参数。以下是 wayland-client-protocol.h

的示例
struct wl_shell_surface_listener {
    /**
     * ping client
     *
     * Ping a client to check if it is receiving events and sending
     * requests. A client is expected to reply with a pong request.
     */
    void (*ping)(void *data,
                 struct wl_shell_surface *wl_shell_surface,
                 uint32_t serial);
    // ...
}

此参数的意图是客户端将使用pong响应显示服务器,并向其传递值serial。服务器会将通过serial收到的pong与通过ping发送的serial进行比较。

还有许多其他函数包含这样的serial参数。此外,API中的其他函数的实现通常会增加全局wl_display->serial属性以在执行某些工作之前获取新的serial值。我的问题是,这个serial参数的基本原理是什么,一般意义上的 ?它有名字吗?例如,这是IPC的事情,还是事件驱动/异步编程中的常见做法?它有点像XCB" cookie"异步方法调用的概念?这种技术是否在其他程序中找到(请举例说明)?

另一个例子是过剩,请参阅glutTimerFunc discussed here作为异步调用的常用习惯用法。"我很想知道这个成语是否有一个名字,以及(请引用的好引用)它被讨论为异步/偶数驱动编程中的最佳实践或技术,例如continuation或"信号和插槽。"或者,例如,共享资源计数如何只是整数,但我们认为它们是"信号量。"

1 个答案:

答案 0 :(得分:0)

注释中的Hans PassantTom Zych状态,该参数区分了一个异步调用与另一个异步调用。

我仍然对更深层次的问题感到好奇,即如果这种技术是异步/事件驱动软件中常用的技术,并且它有一个众所周知的名称。