3

私は最近、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ディスプレイ サーバーに で応答し、値 を渡すことですserialserialサーバーは、経由で受信したpongものとserialping で送信したものを比較します。

serialこのようなパラメーターを含む関数は他にも多数あります。さらに、API 内の他の関数の実装は、多くの場合、何らかの作業を行う前にグローバルwl_display->serialプロパティをインクリメントして新しい値を取得します。私の質問は、一般的な意味で、このパラメーターserialの根拠は何ですか? 名前はありますか?たとえば、これは IPC のことですか、それともイベント駆動型/非同期プログラミングの一般的な方法ですか? 非同期メソッド呼び出しの XCB の「Cookie」の概念のようなものですか? この手法は他のプログラムにもありますか (例を挙げてください)?serial

別の例は glut にあります。「非同期呼び出しの一般的なイディオム」としてglutTimerFunc ここで説明されているを参照してください。このイディオムに名前があるかどうか、また、継続や「シグナルとスロット」など、非同期/偶数駆動型プログラミングのベスト プラクティスまたはテクニックとしてどこで (良い引用をお願いします) 議論されているかを知りたいです。または、たとえば、共有リソースの数は単なる整数ですが、「セマフォ」と見なされます。

4

2 に答える 2

0

Hans PassantTom Zychがコメントで述べているように、引数は、ある非同期呼び出しを別の非同期呼び出しと区別することです。

この手法が非同期/イベント駆動型ソフトウェアで一般的に使用されているものであるかどうか、およびよく知られている名前があるかどうかという、より深い質問にまだ興味があります。

于 2016-04-02T15:13:01.823 に答える