問題タブ [omnithreadlibrary]
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.
delphi - OmniThreadLibrary でパイプライン ステージを監視する方法は?
パイプラインのタスクをどうにかして監視することはできますか? このように各タスクにモニターを追加してみました
しかし、「タスクは単一のモニターでのみ監視できます」という例外が発生します(私が理解しているように、パイプラインステージ用に内部の非表示モニターが既にインストールされているために発生します)。
multithreading - OmniThreadLibrary Future の正しい使用方法
現在、OmniThreadLibrary を試しています。同封されているのは私のコードです:
LongWait() を呼び出すと、UI をブロックすることなく正常に動作します。私がやりたいことは次のとおりです。
- 値を待っている間、バックグラウンドでタスクを実行させます
- 例外が発生した場合は、メイン スレッドでキャッチする必要があります
- タスクが完了したかキャンセルされたかをメインスレッドが判断できるようにする
これらすべてを行うノンブロッキング関数を実行することは可能ですか?
前もって感謝します、
V.
編集:質問を追加
multithreading - TOmniMREW の CPU 負荷の少ない代替手段はありますか?
私は、TOmniMREW に似たスリムなシングル読み取りマルチ書き込みロックを求めていますが、競合が発生した場合に CPU への負荷が少なくなります。
TOmniREW はスピンロックのみを使用するため、ロックを取得できるまで、スレッドは 100% の CPU 使用率に急増します。
現在、私はクリティカル セクションを使用しており、動作が効率的ではありませんが (ライターよりもリーダーの方が多い)、競合スレッドが CPU 時間を放棄した場合に備えています。
私の場合、競合は非常にまれに発生します。通常は、ライターがより複雑な (長い) 操作をトリガーするときに発生しますが、その場合、スピンロックの CPU 使用率が急上昇します。
Windows SRW の実装は同様の戦略を使用しており、何の助けにもなりません(編集:実際には、競合が激しい場合には約 2 ~ 3 倍高速ですが、それでも問題が発生し ます 編集 2: TOmniMREW は、将来のバージョンで利用可能になると SRW を使用します。速度は同じになります)。
delphi - iOS/Android/OSX の OmniThread の代替品は?
iOS/Android/OSX で OmniThread に代わるものはありますか?
OmniThread ほど完全である必要はありません。スレッド プールと TFuture<> クラスがあればよいだけです。
ありがとう!
更新: Delphi XE7 は、System.Threading で Future/Parallel/Task を実装するようになりました。
delphi - TOmniMessage で埋め込みオブジェクトを解放する正しい方法は何ですか?
データを含むさまざまなメッセージを送信するタスクがあります。
例えば:
受信側で私が持っている
しかし、MsgData.Clear がすべてのメモリの割り当てを正しく解除するとは思えません。
TomniValue の割り当て解除の正しい処理は何ですか?
delphi - Delphi OmniThreadLibrary でフラット ファイルを読み取る
私はデルファイで非常に広いファイルを読んでいます
ファイルはカンマ区切りで、ほとんどの時間は文字列の解析に費やされます。
ロジックは次のとおりです
- ファイルを開く
- 読み込まれた行
- 行をレコードの配列に分割する
- 吐き出された配列を次のプロシージャに渡します
- ステップ 2 に進みます
- ファイルを閉じます。
ステップ 3 を並行して実行し、現在 OmniThreadLibrary を調べたいと考えています。
最善のアプローチは何ですか?
Parallel For を使用しますか? ピペレン?またはキュー?
「Parallel For」を使おうと考えているのですが、ファイルが何行あるのかわからないのが問題です