WS_CALLBACK_MODEL
列挙型メンバー 2
| 名前 | 10進 | 16進 | 説明 |
|---|---|---|---|
| WS_SHORT_CALLBACK | 0 | 0x0 | この値は、コールバックが short として呼び出されることを示すために使用されます。 コールバックが short として呼び出される場合、呼び出し元へ速やかに制御を戻せるように、長時間の計算や長時間ブロックする呼び出しは避けるべきです。コールバックが short として実行されている間は、プロセス内で他の作業項目をデキューできなくなる可能性があります。これは、スタベーションによるデッドロック、システムの応答不能、またはシステムの使用率低下を招く可能性があります。 short として呼び出されたコールバック内で IO を行う必要がある場合は、長時間ブロックする呼び出しを避けるために、同期 IO ではなく非同期 IO を使用することがベストプラクティスです。 |
| WS_LONG_CALLBACK | 1 | 0x1 | この値は、コールバックが long として呼び出されることを示すために使用されます。 long として呼び出されたコールバックは、呼び出し元へ速やかに制御を戻す必要はありません。 ただし、long のコールバックは限られたリソースであるため、コールバックを常に long として呼び出せるとは限りません。 コールバックを long として呼び出す前に、呼び出し元は必要に応じて作業をデキューできる別のスレッドが利用可能であることを確認しなければなりません。たとえば、呼び出し元がスレッドを作成する必要があるにもかかわらず作成できない場合は、コールバックを short として呼び出さなければなりません。 すべてのコールバックは、short として呼び出される場合と long として呼び出される場合の両方に対応できなければなりません:
|
公式ドキュメント
コールバック (たとえば WS_ASYNC_CALLBACK) のスレッド動作を指定します。
解説(Remarks)
コールバックを long と short のどちらで呼び出すかは、呼び出し元の実装に委ねられています。 チャネルおよびリスナーの実装では、非同期コールバックについてこれを制御する手段として、WS_CHANNEL_PROPERTY_ASYNC_CALLBACK_MODEL および WS_LISTENER_PROPERTY_ASYNC_CALLBACK_MODEL プロパティが提供されています。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
列挙メンバーの定義。HSP タブは #define global(値は16進)。
typedef enum WS_CALLBACK_MODEL : int {
WS_SHORT_CALLBACK = 0,
WS_LONG_CALLBACK = 1
} WS_CALLBACK_MODEL;public enum WS_CALLBACK_MODEL : int
{
WS_SHORT_CALLBACK = 0,
WS_LONG_CALLBACK = 1,
}Public Enum WS_CALLBACK_MODEL As Integer
WS_SHORT_CALLBACK = 0
WS_LONG_CALLBACK = 1
End Enumimport enum
class WS_CALLBACK_MODEL(enum.IntEnum):
WS_SHORT_CALLBACK = 0
WS_LONG_CALLBACK = 1// WS_CALLBACK_MODEL
pub const WS_SHORT_CALLBACK: i32 = 0;
pub const WS_LONG_CALLBACK: i32 = 1;// WS_CALLBACK_MODEL
const (
WS_SHORT_CALLBACK int32 = 0
WS_LONG_CALLBACK int32 = 1
)const
WS_SHORT_CALLBACK = 0;
WS_LONG_CALLBACK = 1;// WS_CALLBACK_MODEL
pub const WS_SHORT_CALLBACK: i32 = 0;
pub const WS_LONG_CALLBACK: i32 = 1;const
WS_SHORT_CALLBACK* = 0
WS_LONG_CALLBACK* = 1enum WS_CALLBACK_MODEL : int {
WS_SHORT_CALLBACK = 0,
WS_LONG_CALLBACK = 1,
}#define global WS_SHORT_CALLBACK 0x0
#define global WS_LONG_CALLBACK 0x1