問題タブ [scheduling]
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.
multithreading - オペレーティングシステムはTLBフラッシュを最小限に抑えようとしていますか?
たとえば、同じプロセス内のスレッドを「スケジュール対象」リストにグループ化するなど、TLBフラッシュを最小限に抑えるためにオペレーティングシステムに実装されている共通のメカニズムがあるのではないかと思います。
これは、スレッドに対してプロセスを使用するかどうかを決定する際の重要な要素だと思います。次のスレッドが同じプロセススペースにあるかどうかをOSが気にしない場合、「TLBフラッシュを最小限に抑える」スレッドのいわゆる利点が過大評価される可能性があります。そうですか?
数百のスレッドと数十のプロセスを持つシステムを考えてみましょう。これらが同じプロセスでスレッドを同時にスケジュールするように最適化されていない場合、スレッドのパフォーマンスに対する期待はそれほど大きくない可能性があります。
質問がそれほど明確でない場合は、例を示します。
python - Python でのスケジューリングの問題
私はpythonを使用して、ベンダーが提供するpython APIを使用してハードウェアusbスニファーデバイスをインターフェースしており、無限ループの別のスレッドでデバイスから(usbパケット)を読み取ろうとしています(これは正常に動作します)。問題は、私のメイン ループが再びスケジュールされないように見えることです (私の読み取りループがすべての注目を集めます)。
コードは次のようになります。
(実際のコードを貼り付けることもできますが、ハードウェア デバイスが必要なので、あまり役に立たないと思います)。
メインスレッドがプログラム全体を終了する前に、このコードが約 1 秒間 USB パケットのダンプを開始することを期待しています。ただし、表示されるのは「Sleep 1」だけで、usb_dump()
手順は永久に実行されます。プロシージャの内部ループで「time.sleep(0.001)」ステートメントのコメントを外すと、usb_dump()
期待どおりに動作し始めますが、Python コードは入ってくるすべてのパケットに追いつくことができなくなります :-(
ベンダーは、これは Python スケジューラの問題であり、API のせいではないため、役に立たないと言います。
«しかし、Python でスレッド化を使用する場合、いくつかのニュアンスが発生しているようです。DumpThread スレッドに time.sleep を配置することで、制御を放棄するように Python スレッド システムに明示的に信号を送ることになります。それ以外の場合、いつスレッドを切り替えるかを決定するのは Python インタープリターであり、通常は一定数のバイトコード命令が実行された後にそれを行います。»
ここでpythonが問題であることを誰かが確認できますか? DumpThread リリース コントロールを作成する別の方法はありますか? 他のアイデアはありますか?
algorithm - タスクの開始時間の計算
次のような要件があります (信じてください、私は宿題をするには年を取りすぎています にやにや笑)
さまざまな頻度で実行されるタスクがたくさんあります。また、開始の「シード」日付/時刻もあります。開始シードは過去のある時点で、1 分前、5 年前などです。
開始シード日時と頻度を使用して、タスクの次の実行時間を計算する必要があります。単純に「現在」とタスクの頻度を足すことはできません (MS SQL Server でジョブをスケジュールした場合、これはおなじみのコンセプト)
これを行う愚かな方法は、開始シードを取得し、「現在」よりも大きくなるまで周波数を追加し続けることです。それはほとんど最適ではありません。それを行う単純な方法は、開始シード日を取得し、それを今日の日付に変更して時間をそのままにしてから、現在よりも大きくなるまで頻度を追加することですが、頻度が 24 時間の倍数であることを前提としています。
では、これを行うための最良/最速の方法は何ですか? C# ソリューションのボーナス ポイントですが、これはどの言語でも興味深いパズルを作成するのに十分一般的です :)
java - 10 分ごとに関数を呼び出す
私は専門家ではなく、ただの初心者です。ですから、私のためにいくつかのコードを書いてください。
CLASS A
ととの 2 つのクラスがある場合CLASS B
、内部CLASS B
には という関数がありますfunb()
。CLASS A
この関数を10 分おきに呼び出したいと思います。
あなたはすでにいくつかのアイデアを私に与えてくれましたが、私にはよくわかりませんでした。
サンプルコードを投稿していただけますか?
algorithm - ハンガリーのアルゴリズムと複数の要因
いくつかのイベントに人を割り当てる必要がある状況があります。価格を要因として考えれば問題ありませんが、いくつかの要因があります。
まず、いくつかの背景。これは、何らかの理由で入院している子供たちの話の時間を促進する非営利団体のためのものであり、そうするために彼らは自主的な仕事に依存しています。したがって、彼らは人々の善意に依存しているので、人々ができる/やりたいと思う限り多くの仕事を人々に与えます。それは次のように異なります。
- 朝しかできない人もいれば、午後しかできない人もいます。
- 月曜日しかできない人もいれば、木曜日は行けない人もいます。
- 月に1回しか行けない人もいれば、4回行ける人もいます(そして、経験が豊富で月に10回できるので、これらのアクションで「優先」が与えられる人もいます)。
それで、私はちょっと最初の2つを理解しました。ハンガリーのアルゴリズムは価格に関するものなので、私は彼らが行けない時のために彼らにばかげて高い価格を与えるでしょう。しかし、他の人はどうしますか?
私は彼らにある種のスコアを与えることを考えました。月に一度これを行うことができる1人の人は1000ポイントのようなものがかかります。誰かが月に10回行くことができる場合、その人は100ポイント(1000ベースを10で割ったもの)の費用がかかります。また、これを配布する方法は、次のように、別のアクションが実行されるたびに価格を上げることです(選択された人は関連するコストに*があります)。
最初の反復
2回目の反復
これは、すべての人々の間でそれに応じて分配する方法であり、これを数回行うことができる人々により優先されます。
あなたはどう思いますか、そしてそれをどのように行いますか?
scheduling - Manugistics/Avyx Forest および Trees スケジューリング ユーティリティ
1994 年に、誰かが、森林と樹木を定義するソフトウェアのスケジューリング パッケージを利用して、NASA のスケジューリング パッケージを書きました。1 つのライブラリを除いて、パッケージの完全なソースがあります。インクルード ファイルのどこにもそれを書いた人を示すものはありませんが、それが Manugistics であると信じる理由があります。誰でも洞察を提供できますか?
java - コードの実行をスケジュールする方法は?
私はいくつかのコードをスケジュールする必要がある Web アプリケーションに取り組んでいます。そのためにクォーツを使用しています。今の問題は、毎日、または24時間後に動作させたいということです。これを行う方法を教えてください。以前にこれを行ったことがなく、スケジューラ API のサンプル コードを使用しています。
java - J2EE Web アプリケーションでのスケジュールベースの実行
Java Web アプリケーション内での実行のスケジューリングについてアドバイスをお願いします。(現在Tomcatで実行していますが、Tomcat固有のものは避けたいです)。
以下は、私が興味を持っている問題の側面を定義していると思います。
一連のファイルを定期的にポーリングして更新するアプリケーションを考えてみましょう。ユーザーが特定のファイルのポーリング間隔を個別に定義し、ユーザー入力に従って実行スケジュールを更新できるユーザー インターフェイスを提供したいと考えています。
Web アプリでこれを安全に達成するにはどうすればよいですか?
c# - ASP.NET-データベーステーブルを定期的に監視する方法は?
VS 2008(C#)を使用してWebサイトを開発しています。私の現在の使命は、次のタスクを実行するモジュールを開発することです。
- 15分ごとに、プロセスはデータベースと通信して、登録によってデータベースの「ユーザー」テーブルに新しいユーザーが追加されたかどうかを確認する必要があります。
- 新しいエントリが見つかった場合は、そのエントリをxmlファイルに追加する必要があります(たとえば
NewUsers18Jan2009.xml
)。
これを達成するために、次のうちどれが最も適切ですか?
- スレッド
- Windowsサービス
- 他の
これを実証するために利用できるサンプルはありますか?
c# - Timer クラスを Java から C# に変換する: スケジューリング タスク
java.util.Timer
アプリケーションを Java から C# に移植していますが、との間の動作と機能の違いに関連する問題に直面していますSystem.Threading.Timer
。実際、Timer クラスの Java バージョンには、(元のコードで使用されている) タスクをスケジュールするための機能があります。これは、.NET バージョンには存在しません。時間。
機能を実装するための小さなクラスセットであっても、解決策はありますか?
いくつかのスケジューリング ライブラリ (Quartz など) が存在することに気付きましたが、使用するコードの量を最小限に抑えるソリューションを希望します。
皆さん、ありがとうございました!:)