、私はスリープまたはWaitForSingleObject関数などの呼び出しがSleepExとWaitForSingleObjectExような彼らの警告可能なバージョンに使用されたブロックされた場所を変更しました。それから、QueueUserAPCでAPCをキューに入れることで待機を中断できます。戻り値がWAIT_IO_COMPLETIONの場合は、すべてのデストラクタが呼び出されてスレッドが終了する特別な例外がスローされます。これは、pthread_cancel()のLinux版と似ています。これにより、スタックが巻き戻され、スレッドが終了すると、クリーンアップされます。
NtWaitForKeyedEvent()にもAlertableパラメータがあることがわかります。このケースでも同じことができるかどうか、または警告があるのでしょうか? APCがこれを起こした場合、NTSTATUSはWIN32の戻りコードに直接対応していないため、どの戻り値を探すべきかもわかりません。 STATUS_USER_APCとSTATUS_ALERTEDがあり、その2つのどちらかになるかわかりません。ユーザのAPC機能が、キー付きイベント待機を警告するのに十分でない場合、何がありますか?NtWaitForKeyedEventがアラート可能ですか?私は、Windowsは、スレッドの中断をサポートするために<a href="http://locklessinc.com/articles/keyed_events/" rel="nofollow">http://locklessinc.com/articles/keyed_events/</a><br> <br> に触発され、カスタム同期プリミティブのためのイベントをキー使用しています
2
A
答えて
1
NtWaitForKeyedEvent
Altertable = TRUEの場合は、あなたが望むことをするように見えます。それはNtWaitForSingleObject
で設定したパラメータで、APCの受信も可能にします。
STATUS_USER_APC
は、APCが実行されて待機が完了した場合はSTATUS_ALERTED
となります。NtAlertThread
があなたのスレッドに関連して呼び出された場合。待つのを止める信号があれば、NtAlertThread
で十分です。
例外処理メカニズムでSEHの巻き戻しが行われる場合は、おそらくAPCルーチンから直接特殊例外をスローすることができます。
関連する問題
- 1. は、私は<a href="http://en.wikipedia.org/wiki/Microsoft_Blend" rel="nofollow noreferrer">Expression Blend</a> 4(<a href="https://en.wikipedia.org/wiki/Windows_Phone" rel="nofollow noreferrer">Windows Phone</a> 7のために)、私は(資産)のすべての行動がロードされている起動すると
- 2. シングルDSLは、私は別の表現を生成するために、単一のDSLを使用してのアイデアが好きで、その目的のために、私は現在、<a href="https://github.com/caelum/hypertemplate" rel="nofollow">Hypertemplate</a>が<a href="https://github.com/caelum/restfulie" rel="nofollow">Restfulie</a>に詰め込ま使用してい
- 3. 私は<a href="http://www.miglayout.com/" rel="nofollow">MigLayout</a>で同じセルを埋めるために、両方たい二つの成分持たMigLayout
- 4. リボンジェネレータは、私が<a href="http://windowsribbon.codeplex.com/" rel="nofollow">http://windowsribbon.codeplex.com/</a></p> <p>からライブラリを使用してWindowsリボンAPIを使用するためのセットアップに自分の.NETのWinFormsアプリをしようとしています.ribbonファイル
- 5. 私はHTMLのツールチップを作成するために、<a href="https://atomiks.github.io/tippyjs/" rel="nofollow noreferrer">Tippy library</a>を使用していますAngularJS
- 6. 私はこれは私が私のプロジェクトでそれを含めています方法です<a href="https://mdbootstrap.com/" rel="nofollow noreferrer">mdbootstrap</a></p> <p>含まれるようにWebPACKのを使用していますWebPACKの
- 7. 私は<a href="https://www.primefaces.org/primeng/#/" rel="nofollow noreferrer">PrimeNG</a><p> </p><a href="https://www.primefaces.org/" rel="nofollow noreferrer">primefaces.org</a>からすべてがうまく機能している使用しています
- 8. のpython3のデフォルトのエンコーディング私は<a href="http://inginious.readthedocs.io" rel="noreferrer">inginious</a>と呼ばれるフレームワークを使用していますし、そのテンプレートをレンダリングする<a href="http://webpy.org/" rel="noreferrer">web.py</a>を使用しています
- 9. 私は私の<a href="http://plugin.bearsthemes.com/jquery/OwlFilter/" rel="nofollow noreferrer">owl carousel</a></p> <p>で項目をフィルタリングするために、このプラグインを使用しています。しかし、それは動作していない
- 10. PythonのConnexionは - 私は、Pythonフラスコサーバーを生成するために<a href="http://editor.swagger.io/" rel="nofollow noreferrer">Swagger Editor</a>を使用してい
- 11. Conguring Hound.ciは、私は私のコードのスタイル警官として<strong><a href="https://houndci.com/" rel="nofollow">Hound CI</a></strong>、と私のCSSの命名のための<strong><a href="http://getbem.com/introduction/" rel="nofollow">BEM</a></strong>を使用していますBEM
- 12. DisplayTimeは、私が <a href="http://tooltipservice.codeplex.com/" rel="nofollow">http://tooltipservice.codeplex.com/</a></p> <p>を使用していますし、どのような値Iが設定されているため、私はこのコントロールに問題があり
- 13. MarkerViewは私application.Iで折れ線グラフを示すため<a href="https://github.com/PhilJay/MPAndroidChart" rel="nofollow noreferrer">MPandroidchart</a>を使用していますMPAndroidChart
- 14. <a href="http://jqueryui.com/demos/dialog/" rel="nofollow noreferrer">jQueryUI dialog</a>を使用するための
- 15. jQueryのは、私はキーが押され、検出に使用方法を簡素化するためにjkeyを使用して、この<a href="http://jsfiddle.net/fCAAY/68/" rel="nofollow">code</a></p> <p>を持って上矢印キーが押された場合は-1にまたは変数
- 16. 私はバックエンドのために<strong><a href="http://parseplatform.org" rel="nofollow noreferrer">parse server</a> + MongoDBの</strong>を使用していると私はCOMPLEXEクエリを作成するための支援が必要なCOMPLEXE解析サーバやMongoDBのクエリ
- 17. dragulaModelは、私は私のプロジェクトのために<a href="https://github.com/valor-software/ng2-dragula" rel="nofollow">ng2-dragula</a>を使用してい
- 18. 私は円グラフをロードするために<a href="https://d3js.org/" rel="nofollow">d3</a>を使用して円グラフを作成してい
- 19. は私が<a href="http://livevalidation.com" rel="nofollow">livevalidation</a>プラグインを使用しています
- 20. ObjectMapperが、私は<a href="https://github.com/tristanhimmelman/AlamofireObjectMapper" rel="nofollow">AlamofireObjectMapper</a>を使用しています応答
- 21. は、私が<a href="http://apionrails.icalialabs.com/book/chapter_two" rel="nofollow">APIonRails tutorial</a>を使用しています
- 22. エラー:私はパーサを作成するためにANTLRを使用したいと私は、私が実行している間、すべての命令に従った後</p> <p><a href="https://levlaz.org/setting-up-antlr4-on-windows/" rel="nofollow noreferrer">Here</a></p> <p>からの指示に従っ
- 23. モジュール名は、私は、テンプレートをロードするために<a href="https://github.com/requirejs/text" rel="nofollow noreferrer">text.js</a>を使用していRequireJSテキストプラグイン
- 24. 7 - ジップAPI私は私のプロジェクトのために<a href="https://libraries.io/github/geoffsmith82/d7zip" rel="nofollow">d7zip</a>を使用してい進捗
- 25. は、私は私のWebアプリケーションでイベントをレンダリングする<a href="http://fullcalendar.io/" rel="nofollow noreferrer">fullcalendar</a>を使用しています
- 26. vcRecaptchaService.execute()の.thenメソッドの使い方私は私のログインフォームにGoogleの目に見えないreCAPTCHAのを追加するための</p> <p>を<a href="https://github.com/VividCortex/angular-recaptcha" rel="nofollow noreferrer">anuglar-recaptcha</a>を使用しています
- 27. 私はビデオを作成するために<a href="https://github.com/leonid-shevtsov/headless" rel="nofollow">headless</a>と<a href="https://github.com/SeleniumHQ/selenium/wiki/Ruby-Bindings" rel="nofollow">selenium-webdriver</a>の宝石を使用してい
- 28. 私は私が右上の隅にダウンロードボタンのツールチップの名前を変更するにはどうすればよい<a href="http://echarts.baidu.com/index.html" rel="nofollow noreferrer">echarts</a></p> <p><a href="https://i.stack.imgur.com/v9vvf.png" rel="nofollow noreferrer">Picture of my chart</a></p> <p>を使用しています
- 29. 無効化デフォルトでは、材料設計<a href="https://material.google.com/components/bottom-navigation.html" rel="nofollow">Bottom navigation</a>のために、私は<a href="https://github.com/roughike/BottomBar/tree/v1" rel="nofollow">BottomBar</a>ライブラリを使用しているタブ
- 30. Javascriptを私はアプリがEPUBリーダーは、単眼鏡ライブラリは、ここで本がロードされているされて</p> <p><a href="http://code.google.com/p/chaek/" rel="nofollow">http://code.google.com/p/chaek/</a></p> <p>次のリンクでサンプルアプリを発見し、それがで変更するために使用するアンドロイド3.0
これはうまくいくようです。私はいくつかのフラグの設定を行うことができるのでAPCを使用しているので、キャンセルがユーザ要求であるかどうかを確認することができます。私があまりよく分からないことの1つは、待機が中断されたがアラートが異なる場合の対処方法です。私は正しいことは、(それが使用されている場合は、適切に調整されたタイムアウトを使用して)待機を再開することだと思うが、おそらくNtReleaseKeyedEvent()を逃す機会がある場合は問題です。キー付きイベントAPIは、アラートのこの側面を何らかの形で説明していますか? –