我最近一直在使用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
与通过serial
ping发送的信息进行比较。
还有许多其他功能都包含此类serial
参数。此外,API中其他功能的实现通常会在执行某些工作之前增加全局wl_display->serial
属性以获得新serial
值。我的问题是,从一般意义上讲,此serial
参数的基本原理是什么?它有名字吗?例如,这是IPC还是事件驱动/异步编程中的常规做法?有点像用于异步方法调用的XCB“ cookie”概念吗?是否可以在其他程序中找到此技术(请参见示例)?
另一个例子是过剩,glutTimerFunc
此处将其视为“异步调用的常见习语”。我很想知道这个习惯用语是否有名称,以及在哪里(请引用好),作为异步/均匀驱动编程中的最佳实践或技术(例如延续或“信号和插槽”)进行讨论。或者,例如,共享资源计数如何仅仅是整数,但我们认为它们是“信号量”。
正如Hans Passant和Tom Zych在评论中指出的那样,该参数将一个异步调用与另一个异步调用区分开。
我仍然对这个更深层次的问题感到好奇,那就是该技术是否是异步/事件驱动软件中常用的一种技术,以及它是否具有众所周知的名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句