我最近一直在使用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或"信号和插槽。"或者,例如,共享资源计数如何只是整数,但我们认为它们是"信号量。"
答案 0 :(得分:0)
注释中的Hans Passant和Tom Zych状态,该参数区分了一个异步调用与另一个异步调用。
我仍然对更深层次的问题感到好奇,即如果这种技术是异步/事件驱动软件中常用的技术,并且它有一个众所周知的名称。