問題タブ [cancellation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - pthread と printf の動作のキャンセル
pthread キャンセルのコード サンプルを次に示します。
私はコンパイルします:
実行すると、 の後に 追加の番号が出力されることがありsleep(1)
ます。
この番号が重複している場合があります。
時々そうではありません:
I がのfflush(stdout)
前sleep(1)
にある場合、追加の番号がすぐに出力されます。
printf
スレッドをキャンセルするときのこの奇妙な動作を回避するにはどうすればよいですか?
ありがとうございました。
.net - CancellationToken をサポートする拡張メソッド WebRequest.GetResponseAsync を実装する
ここでの考え方は単純ですが、実装にはいくつかの興味深いニュアンスがあります。これは、 .NET 4で実装したい拡張メソッドのシグネチャです。
これが私の最初の実装です。私が読んだことから、タイムアウトのために Web リクエストをキャンセルする必要があるかもしれません。request.Abort()
そのページに書いてあるサポートに加えて、キャンセルの場合はちゃんと電話したいCancellationToken
。
私の質問は単純ですが挑戦的です。この実装を TPL と共に使用した場合、実際に期待どおりに動作しますか?
linux - POSIXスレッドのキャンセルがすぐに行われないのはいつですか?
POSIX では、スレッド キャンセル タイプとしてPTHREAD_CANCEL_ASYNCHRONOUS
、およびPTHREAD_CANCEL_DEFERRED
( によって設定されるpthread_setcanceltype(3)
) いつpthread_cancel(3)
有効になるかを決定する 2 つのタイプが指定されています。私の読んだところでは、POSIX のマニュアル ページではこれらについてあまり説明されていませんが、Linux のマニュアル ページでは次のように説明されていますPTHREAD_CANCEL_ASYNCHRONOUS
。
スレッドはいつでもキャンセルできます。(通常、キャンセル依頼を受け次第すぐにキャンセルとなりますが、システム上保証するものではありません。)
システムがこれを保証するものではないという意味が気になります。これがマルチコア/マルチ CPU システム (コンテキスト スイッチの前) で発生していることは容易に想像できます。しかし、シングル コア システムはどうでしょうか。
pthread_setcancelstate(3)
キャンセルが要求され、キャンセルが有効 ( ) で、キャンセル タイプが に設定されている場合、スレッドをすぐにキャンセルしないようにすることはできPTHREAD_CANCEL_ASYNCHRONOUS
ますか?- はいの場合、これはどのような条件下で発生する可能性がありますか?
私は主に Linux (LinuxThreads / NPTL) に興味がありますが、より一般的には、このキャンセル ビジネスを POSIX 標準に準拠して表示する方法についても興味があります。
更新/明確化:ここでの実際の懸念事項はpthread_cancel()
、ターゲット スレッドでキャンセルが有効になっており、型に設定されている呼び出しの直後に破棄されるリソースの使用ですPTHREAD_CANCEL_ASYNCHRONOUS
!!! つまり、要点は次のとおりです。この場合、キャンセルされたスレッドが、コンテキストの切り替え後も (非常に短い時間でも) 正常に実行し続ける可能性はわずかにあるのでしょうか?
Damon の回答に感謝します。次のコンテキスト スイッチに関連するシグナルの配信と処理に関する質問が減りました。
Update-2:私は自分の質問に答えて、これは悪い懸念であり、根本的なプログラム設計は根本的に異なる概念レベルで対処する必要があることを指摘しました。この「間違った」質問が、非同期キャンセルの謎について疑問に思っている他の人にとって役立つことを願っています。
ios - デフォルトの iPhone ヘッドフォンによるアクティブ ノイズ キャンセリング
デフォルトの iPhone ヘッドフォンを使用してアクティブ ノイズ キャンセリングを実装するアプリを作成したいと考えています。つまり、iPhoneのヘッドホンマイクを使って外部音声を受信し、位相を180度ずらします。最後に、デフォルトのヘッドフォン スピーカーから反転したサウンドを再生して、外部のサウンドをキャンセルします (アクティブ ノイズ キャンセリング)。
参照: http://electronics.howstuffworks.com/gadgets/audio-music/noise-canceling-headphone.htm
これはiPhoneアプリで実現できますか?
c - ノイズ キャンセルの設定 - マイクの信号をインテリジェントに組み合わせる
ステレオ録音の 2 つの異なるチャネルに接続する 2 つのマイクと 2 つの異なるマイク プリアンプを使用して、ノイズ キャンセリング セットアップを構築しました。
ここにサンプルがあります
http://filestore.to/?d=U5FN2IH96K
私は試した
魔法が起こるとき
しかし、これは周囲のノイズを排除するものではなく、パチパチという音を出すだけです。
代わりに、セットアップでこのタスクにどのように取り組むことができますか? 私は、「論文の著者だけが理解できる論文を読む」よりも、実際的な解決策を好みます。
その際、最終的なモノラル出力をノーマライズして、クリッピングなしで可能な限り大きくするにはどうすればよいでしょうか?
paypal - マーチャント Web サイトからの PayPal サブスクリプションのキャンセル
私たちのウェブサイトにはPayPal支払いシステムが統合されているため、人々は登録してサブスクリプションを選択できます. 支払いが完了し、IPN が当社の Web サイトにアクセスしてシステムを更新すると、サブスクリプションの部分は正常に機能します。ここで、ユーザーが当社の Web サイト内からサブスクリプションをキャンセルできるようにしたいので、クライアントがクリックすると、paypal にリクエストを送信してサブスクリプションをキャンセルするカスタム キャンセル ボタンを用意しました。これをサンドボックス テスト システムで実行することはできましたが、システムをライブ テストに移行したため、キャンセル機能を動作させることができません。現在、ユーザーがキャンセル ボタンをクリックすると、PayPal に通知されていないため、PayPal から IPN が受信されていないと思います。
私たちのウェブサイトからサブスクリプションをキャンセルするために必要なすべての情報を知っていますか. ユーザーがペイパルにログインしてサブスクリプションをキャンセルする方法、またはペイパルにログインしてサブスクリプションをキャンセルする方法があることは知っていますが、ウェブサイトから機能させたい.
助けてください!
ありがとう。
c# - BackGroundworker のキャンセルが wbadmin.exe で機能しない
わかりました、私は使用しています: C# と Windows フォーム
私はバックグラウンドワークを持っています。ここで、キャンセル ボタンを作成したいと思いましたが、キャンセルするように指示し、バックグラウンドワークがそれを受け入れても、トリガーする実行可能ファイルを実行し続けます。
次のコードでキャンセルボタンがあります
バックグラウンド ワーカーのコードは次のとおりです。
ボタンをクリックしてキャンセルすると、アクションは実行されますが、リッチテキストボックスにすべてが表示されるため、バックアップは続行されます
操作がキャンセルされましたバックアップに指定された
ボリュームのシャドウ コピーを作成しています... バックアップに指定された
ボリュームのシャドウ コピーを作成しています... バックアップに指定されたボリュームのシャドウ コピーを作成しています... バックアップに指定されたボリューム
のシャドウ コピーを作成しています...
ボリューム SYSTEM (1.99 GB) のバックアップが正常に完了しました。
ボリューム OS(C:) のバックアップを作成しています。コピー済み (0%)。
ボリューム OS(C:) のバックアップを作成しています。コピー済み (0%)。
ボリューム OS(C:) のバックアップを作成し、コピーしました (8%)。
ボリューム OS(C:) のバックアップを作成し、コピーしました (55%)。
ボリューム OS(C:) のバックアップを作成し、コピーしました (82%)。
ボリューム OS(C:) のバックアップが正常に完了しました。
バックアップ操作は正常に完了しました。
バックアップ操作の概要:
------------------
ボリューム SYSTEM (1.99 GB) のバックアップが正常に完了しました。
ボリューム OS(C:) のバックアップが正常に完了しました。
私は何を間違っていますか?
workflow - try ブロックがキャンセルされると、finally ブロックが実行されます
私の TFS2012 ビルド ワークフローには Parallel アクティビティがあり、いくつかのブランチ内には try-finally アクティビティがあります。1 つのブランチが失敗した場合 (たとえば、CodeAnalysis を使用したコンパイルで CodeAnalysis エラーが検出された場合)、他のブランチはキャンセルされます。ただし、分岐がブロックを持つ try ブロック内にある場合finally
、finally ブロックが実行され、30 秒以上かかる場合、キャンセルは次のように失敗します。
BuildWarning: The workflow instance accepted a stop request but did not complete within 00:00:29.9922015. This may indicate an AsyncCodeActivity is active that does not support cancellation.
このようなメッセージは避けたいので、次のようにします。
try-finally
内部で例外が発生したときに finally が実行try
され、すべてがキャンセルされたときに実行されないアクティビティをどうにかして持つことはできますか?- そうでない場合は、ワークフローがキャンセルされ
if
たブロック内に追加し、長いことをしたくありません。finally
ワークフローがキャンセルされたことを知るにはどうすればよいですか?
編集:このパターンは、TFS2012 に付属する DefaultTemplate.11.1.xaml にも表示されますTryCatch.Finally
。