#MaxThreadsBuffer

提供: AutoHotkey Wiki
移動: 案内検索

実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 | キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル | レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト

#MaxThreadsBuffer[編集]

当該ホットキーのスレッドの実行数が #MaxThreadsPerHotkey で指定した上限に達しているときに新たにホットキーが押されたとき、実行可能になるまで後回しにするか、ホットキーを無視するかを設定。

#MaxThreadsBuffer On|Off

Parameters[編集]

引数名 説明
On|Off On スレッドの上限を超えた分は後回しにされ、上限値未満になるまでバッファされる。
Off 規定値。スレッドの上限を超えた分は無視され処理は実行されない。

Remarks[編集]

通常、このタイプのバッファリングはメリットよりも多くのデメリットがあるので、このディレクティブはめったに使用されない。

例えば本設定が ON のときに、偶発的にあるホットキーを2連打した場合、次のようなことが起きる。このタイプバッファの保持期限はは1秒なので、1回目のホットキー処理が1秒未満で完了するような場合は2番目の処理スレッドが実行されてしまう。AutoHotkeyには、スレッドをバッファする他の手段(「Thread Interrupt」や 「Critical」 等)がある。本ディレクティブによる手法はデメリットを伴うため、デフォルトでOFFとなっている。

すでにひとつ後回しにしている場合は、それ以上は後回しにされず無視される。後回しにしていられる時間は1秒までで、それ以上経過すると破棄される。

この機能は主に、キーボードのオートリピートで高速に連続実行されるような機能を割り当てる際に使用する。
たとえば、キーリピート間隔が50ミリ秒だった場合、実行される動作が60ミリ秒かかってしまうと、動作終了後に次にホットキーが押されて実行されるまでに40ミリ秒かかってしまうが、この機能を有効にしておくと前の実行が終了してすぐ次の動作が実行される。

本ディレクティブは、記述された場所から次にこのディレクティブが記述される間に宣言されているホットキーにのみ影響する(#UseHookも同様の効果範囲である)。また、他のディレクティブと同様にコマンドではないのでサブルーチンの処理に混ぜて記述するのは妥当ではない。

Related[編集]

#MaxThreads, #MaxThreadsPerHotkey, Threads, Hotkey, #MaxHotkeysPerInterval, #HotkeyInterval, ListHotkeys

Example(s)[編集]

#MaxThreadsBuffer on
#x::MsgBox, This hotkey will use this type of buffering.
#y::MsgBox, And this one too.
#MaxThreadsBuffer off
#z::MsgBox, But not this one.