問題タブ [suspend]

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.

0 投票する
2 に答える
2065 参照

java - クライアントとの通信のための Servlet 3.0 API での継続または一時停止と再開?

私たちは、Swing 2 層アプリケーションを Web アプリケーション (Tomcat、Spring MVC、違いがあれば extJS) に移行しようとしています。

このようなコードがアプリケーションで見つかりました (単純化された Javaesc 疑似コード)。

つまり、何らかの処理の途中で、ユーザーとの対話が開始されます。明らかに、サーブレットで直接それを行うことはできません。

これをかなりうまく処理できるのは、継続です。そこで、それらを使用できるかどうかを確認したところ、この種のものを有効にするライブラリが実際にあることに驚きました。

その質問で言及されているライブラリとその回答を確認すると、このステートメントに出くわしました

継続は、仕様が確定すると、標準の Servlet-3.0 中断可能リクエストに置き換えられます。提案された標準の一時停止/再開 API を実装する Jetty-7 の初期リリースが利用可能になりました

しかし、Servlet 3.0 API を使用して上記のようなことを行う方法の例を見つけることができませんでした

質問は次のとおりです。

  1. 上記のコードを 2 つ以上の個別のアクションに完全にリファクタリングすることなく、Servlet-3.0 API を使用して上記を実行できますか?

  2. 上記の答えが「はい」の場合: どのように? これまたは同様のユースケースのある程度完全な例はありますか?

  3. Continuations または Servlet API を使用する必要がありますか? または、これに直接答えられない場合、この決定はどのような条件に依存しますか?

0 投票する
3 に答える
302 参照

java - 一時停止してから再開するか、代替手段を使用してスレッド間で共有データを同期する方法

スレッド - GameThread - が永遠にループし、すべてのスプライトを更新し、レンダリングし、しばらくスリープしてからすべてをやり直すゲームを書いています。キーの押下などを処理するカスタムメイドのイベントハンドラーもあります。

ほとんどの場合、これで問題なく動作します。ただし、GameThread のレンダリング中にイベントがスローされると問題が発生します。まれに、イベントを処理するハンドラーが、レンダリングする必要があるものを同時に変更し、GameThread レンダリングの結果に影響を与える場合があります。

これを回避するには、イベント ハンドラーで GameThread をすぐに一時停止し、イベントを処理してから、GameThread を再開する必要があります。

  1. suspend()/メソッドはresume()私のニーズに合っていますが、廃止されました。ただ、私の場合はデッドロックの可能性が少ないので、そのまま使っても大丈夫でしょうか?

  2. いいえの場合、オーバーヘッドが大きくない他の代替手段はありますか?

一時停止するスレッドにフラグを設定して、スレッドの一時停止を要求するという提案を見たことがあります。ただし、私の場合、ループの反復中に GameThread ループに時間がかかる可能性があるため、実行可能なオプションとは思えません。ループが完了するまでフラグをチェックすることはできず、それまでには手遅れです。

すぐに一時停止する必要があります。そうしないと、ユーザーがイベント処理の遅延に気付くことになります。

0 投票する
4 に答える
7327 参照

c# - Abort または Suspend なしでループレス スレッドを即座に終了する

プロトコル ライブラリを実装しています。ここでは簡単に説明します。

メイン関数内のメイン スレッドは、(tcpclient 内の) ネットワーク ストリーム上でデータが利用可能かどうかを常にチェックします。response が受信したメッセージで、thread が実行中のスレッドであるとします。

これまでのところ、while ループ内にはさらに多くのメッセージが送られ、さまざまな種類の着信メッセージを処理するためのステートマシンもありますが、これで十分なはずです。(関数 "function" と "function2" だけではありません)。

とにかく、プロトコルはプログラマーから隠され、ライブラリであることを意図しているため、このアプリケーションでは関数の内部がどのように見えるかは明確ではありません。これは、プログラムがプロトコルのどの状態にあるかに応じて、プロトコルがいくつかのプログラマ定義関数をスレッドとして開始することを意味します。

したがって、特別な応答 (callAnotherFunction メッセージなど) を受信した場合、スレッド (ここでは「スレッド」という名前) を突然終了させたいと考えています。しかし、ループ内で実行されるかループ外で実行されるか、および終了するまでにどれだけの処理が必要かはわかりません。

非推奨の Suspend または Exceptionthrowing Abort 関数を使用せずにこれらのスレッドを停止するにはどうすればよいですか? (関数のプログラマーに ThreadAbortException のキャッチを強制することはできないことに注意してください。)

それとも、別のプログラム アーキテクチャが必要ですか? (ところで、いつでもメッセージが表示される可能性があるため、ネットワークストリームをメイン関数にポーリングするために receiveMessage 内にループを配置することにしました)。

0 投票する
1 に答える
5541 参照

java - Androidでスレッドを一時停止および再開する方法は?

Android スレッドのサスペンドとレジュームが非推奨になっていることに気付きました。これの回避策は何ですか、またはアンドロイドでスレッドを一時停止して再開するにはどうすればよいですか?

0 投票する
3 に答える
3957 参照

c# - Thread.Suspend()メソッドの代替

Thread.Suspend()ご存知のように、メソッドは廃止されました。ボタンクリックイベントが発生したらすぐにスレッドを一時停止したい。私はThread.Suspend()を使用しましたが、これは完璧に機能しますが、Thread.Suspend()メソッドを使用することは、タスクを一時停止するのに適したメソッドではないことを誰もが示唆しています。フラグを使用してタスクを一時停止しましたが、ボタンクリックイベントが発生するたびに、タスクを終了するのを待つ必要があります。Thread.IsAliveフラグを使用してスレッドが終了するのを待ちましたが、このメソッドはフォームをフリーズします。

スレッドをすぐに中断するにはどうすればよいですか?

0 投票する
1 に答える
3183 参照

sleep - Sleep(suspend)およびResuming windowsフォームは、メインスレッドではなくワーカースレッドでプログラムを開始します

私が作業しているWindowsフォームはサブスクライブしてMicrosoft.Win32.SystemEvents.PowerModeChangedおり、フォーム上でメソッドをSuspend実行します。Close()その上で、初期ロード時と同じように関数をResume実行します。Run()問題は、コンピューターがスリープモードから復帰すると、PowerModeChangedイベントが「.NetSystemEvents」という名前のワーカースレッドでトリガーされ、Run()呼び出されると、メインスレッドではなくこのワーカースレッドでフォームが再作成されることです。

このフォームは、私が別の開発者から継承したプロジェクトであり、Windowsフォームプログラミングは初めてです。フォームを閉じてウェイク時にフォームを再作成するよりも、スリープ/ウェイクプロセスを処理するためのより良い方法や、作成をメインスレッドに強制する方法があるかどうか疑問に思っています。注:コードを削除して、コンピューターがスリープ状態(一時停止)のときに何も実行せず、ウェイクアップ(再開)時に何も実行しない場合、プログラムは正常に動作し続けます(メインスレッドで実行)。どんな助けでもありがたいです。皆さんありがとう。

0 投票する
1 に答える
1314 参照

android - Androidでサスペンド/スリープの前後にスクリプトを実行する

Androidデバイスがスリープ状態になる前と、起動した後にスクリプトを実行したいと思います。cの「early_suspend」フックのようなものがあることがわかりましたが、bashを数行実行したいだけで、まだクロスコンパイルには入りたくありません。

背景は次のとおりです。画面の明るさが低すぎると、一時停止後に画面が再アクティブ化されないことがある、くだらないArchosタブレット(Android 2.2を搭載)があります。私の回避策は、一時停止する前に明るさを上げ、目覚めた後に再び明るさを復元することです。

補足:私のデバイスはルート化されており、それが機能する限り、ソリューションがどれほど醜いものであるかは気にしません。

では、Androidのシェルコードに「早期サスペンド」フックはありますか?

0 投票する
2 に答える
1262 参照

python - スクリプトを一時停止し、計算された時間後に再開するように設定する

以下に更新:

いくつかの要因に基づいてスクリプトをスリープ状態にする時間を計算する関数を作成したスクリプトがあります。つまり、スクリプトを 30 分間再実行する必要がないか、数日かかる可能性があります。

さて、私は time.sleep(seconds) がプログラムをスリープ状態に設定し、それから起動して再度実行すると考えていました。

どうやら、これは私が思っていたことをしていないようです。もちろん、ほとんどのことは、私が思っていること、つまり学習の喜びを実現することは決してないようです!

とにかく、スクリプトが再開されないことがわかったので、これを行う他の方法を探しました。誰かが言及していましos.execたが、私の(非常に限られた)知識からすると、スクリプト内から他の何かを実行するために使用されているようです。それから私はその機能を試しましたthreading.Timerが、それも私が望むことをしていないようです。または、自分が何をしているのかわかりません。その可能性はさらに高くなります。そして、スレッドやデーモンなど、私がまったく知らないことについて言及している人々を見てきました。

私はおそらくforループを考えていましたが、それはかなりアマチュアのようです(ポットとケトルの出会い!)、そしてそれがどれほどうまく機能するかはわかりません(もしあったとしても)。

では、特定の時間実行を停止し、再度実行して、次回までスリープするようにスクリプトを設定する簡単な方法はありますか? これを行うにはかなり簡単な方法があるに違いないと思いますが、実際には手がかりがありません。私は Python 3.2.3 を使用して Windows 7 を使用しています。Python を学習してまだ数か月しか経っていないため、複雑なことは私のスキル レベルを超えている可能性があります。

更新しました:

わかりました、それが私のコードが現在どのようにセットアップされているかです。この単純なコードで試してみましたが、問題は決して起きないことですか? 何が起こっているのかよくわかりません。最初の関数を呼び出し、アイテムを印刷し、5 秒間スリープし、ad naseum を繰り返すと思いました。たぶん、誰かが私がそれをどのようにすべきかを説明できるでしょう。

ありがとう!

0 投票する
1 に答える
1198 参照

iphone - iOS アプリの一時停止時間を延長する

ホームボタンを押すと、アプリは正しく中断されますが、数分しか持続しません。しばらく放置して戻ると、アプリが新しく起動します。

私は自分のアプリでバックグラウンド タスクを実行しておらず、他のアプリは私よりもはるかに長い間停止したままです。

これの潜在的な原因は何ですか?私が気付いていないバックグラウンドで実行されている操作があり、メモリが不足しているときに iOS がアプリを強制終了している可能性はありますか?