私は最近、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
の根拠は何ですか? 名前はありますか?たとえば、これは IPC のことですか、それともイベント駆動型/非同期プログラミングの一般的な方法ですか? 非同期メソッド呼び出しの XCB の「Cookie」の概念のようなものですか? この手法は他のプログラムにもありますか (例を挙げてください)?serial
別の例は glut にあります。「非同期呼び出しの一般的なイディオム」としてglutTimerFunc
ここで説明されているを参照してください。このイディオムに名前があるかどうか、また、継続や「シグナルとスロット」など、非同期/偶数駆動型プログラミングのベスト プラクティスまたはテクニックとしてどこで (良い引用をお願いします) 議論されているかを知りたいです。または、たとえば、共有リソースの数は単なる整数ですが、「セマフォ」と見なされます。