問題タブ [setitimer]
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.
linux - Linuxの切り上げでsetitimer?
Linux 2.6.26 システム (Debian 5.0.5) で短いタイムアウトを設定しsetitimer
、設定値を (getitimer
または別ので) クエリすると、設定した値よりも高い値が返されます。setitimer
戻り値:
いくつかの計算の後に残っていると報告された時間を使用しているため、これは問題があり、それらも大きすぎます。
これは既知の問題ですか? (グーグルは機能しませんでした。)誰かが良い回避策を持っていますか?
c - setitimer を使用してタイマーを一時停止しますか?
Cでは、setitimerを使用してタイマーを開始し、一時停止してから、一時停止された残りの時間でタイマーを再開する方法はありますか? 私の最初の考えは、getitimer を使用して残り時間を節約し、タイマーを停止してから、タイマーを getitimer で保存された値に戻すことでしたが、これは機能していないようです。
linux - Linux での setitimer とシグナル数。シグナル数は実行時間に正比例しますか?
setitimer
Linux (カーネル 2.6; HZ=100) で動作するテスト プログラムがあります。10ミリ秒ごとに信号を送信するようにさまざまなタイマーを設定します(実際には9ミリ秒に設定されていますが、タイムスライスは10ミリ秒です)。次に、プログラムは一定時間 (たとえば 30 秒) 実行され、信号をカウントします。
シグナル数が実行時間に比例することは保証されていますか? すべての実行で、すべてのタイマー タイプ (-r -p -v) でカウントは同じになりますか?
システムには、他の cpu-active プロセスがあってはならないことに注意してください。質問は、固定 HZ カーネルに関するものです。
c++ - C++ で sigaction と itimerval 構造を使用して 2 つのイベントを同時にスケジュールする方法は?
特定の時間にイベントをスケジュールしたいのですが、より正確には、ポアソン トラフィックを生成したいと考えています。したがって、指数分布から生成される特定の時間間隔でパケットを送信する必要があります。インターネットでいくつかの調査を行ったところ、このsetitimer
方法で特定の時間後にアラーム信号をスケジュールできることがわかりましたが、私の場合の使用方法がわかりません。
アドバイスをありがとう。私はあなたの言うことに従いました。まだ少しクエリがあります。私のコードでは、2 つの独立したイベントを同時にスケジュールする必要があります。通常は、2 つのキューを同時に満たす必要があります。これは私が今やったことです:
他のキューでも同じ関数ですが、指数確率変数が異なります
主に、次のことを行います。
2つの質問があります:
1- sa_handler メソッドでポインター「this」を使用して関数を内部的に呼び出すのは良い解決策ですか?
2- メイン関数では、2 つのプロセスが同時に実行されますか? つまり、両方のキューが同時に満たされているということですか?
c++ - itermervalおよびsigaction構造体C++を使用して、ランダムな間隔で2つの関数を同時にスケジュールする方法
ここに新しいコードスニペットがあります:
pthread_cond_waitは通常、1つのスレッドが特定のしきい値に達するまで属性にアクセスしない場合に使用されるため、競合状態を回避するためにこの変数に関連付けられたミューテックスを使用する必要がありますが、私の場合、2つのスレッドは実際には使用しません同じメモリ領域にアクセスする必要があります。これは、最初のスレッドで許可されたときに2番目のスレッドをスケジュールする方法にすぎません。この状況では、「pthread_cond_wait」の前に「pthread_mutex_lock」を呼び出す必要がありますか?
c - タイマーによるCシグナル処理
http://codepad.org/rHIKj7Cd (コード全体ではありません)
私が達成しようとしているのは、親が共有メモリに何かを書き込んでから、子がそれに応じて反応し、5 秒ごとに何かを書き戻すことです。私は SIGUSR1-2 を使用することを考えました。おそらくハンドラーで signum をオンに切り替えましたが、setitimer が SIGALRM をスローするため、それをコーディングする方法がわかりません。ハンドラーでフォークしたくないのは明らかです。1つの子と1つの親しか必要ないため、異なる動作をどのように定義すればよいですか? 私の目標が明確であることを願っています。
5 秒ごと:
- SIGALRM はタイマーによってスローされます
- 親はその計算を共有メモリに書き込みます (セマフォが使用されています)
- 子は共有メモリから読み取り、その計算を書き戻します
また、 signal()の使用が推奨されていないことも知っていますが、これは重要ではありません。
python - signal.setitimer() の適切な構成
プログラムが無期限に一時停止している理由、つまり無限ループのような動作を示している理由を理解するのに苦労しています
おそらく、実行順序がわからないのですが、start() でタイマーがタイムアウトすると、プログラムは __catcher() にジャンプしますよね? 次に、タイマーがリセットされ、ステートメントの残りの部分がリセットされ、プログラムはどこで実行を再開しますか?
助けてくれてありがとう!
c - sigaction の使用時にシグナル ハンドラが呼び出されない
ユーザー レベルのスレッド ライブラリを実装しようとしていますが、ラウンド ロビン方式でスレッドをスケジュールする必要があります。現在、makecontext、getcontext、および swapcontext を使用して作成した 2 つのスレッドの切り替えを機能させようとしています。ITIMER_PROF 値を持つ setitimer が使用され、SIGPROF シグナルが生成されるたびに新しいスレッドをスケジュールするためのハンドラーが sigaction に割り当てられます。ただし、シグナル ハンドラは呼び出されないため、スレッドはスケジュールされません。その理由は何ですか?コードの一部を次に示します。
上記のコードは、タイマーを初期化し、ハンドラー スケジュールをシグナル ハンドラーにアタッチするものです。scheduler() 関数を呼び出す上記の関数にシグナル SIGPROF が与えられると想定しています。スケジューラ関数は次のとおりです。
それぞれのコンテキストが格納されている準備完了スレッドのキューがあります。setcontext 命令が実行されるたびに、各スレッドをスケジュールする必要があります。ただし、scheduler() は呼び出されません。誰かが私の間違いを指摘できますか??