問題タブ [single-threaded]
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.
java - Java はシングル スレッド アプリケーションに as-if serial を適用しますか?
単一のスレッドでいくつかの JUnit テストを実行していますが、非決定的な方法で失敗しています。ある人から、最適化 JVM (Oracle Hotspot 64-Bit 17.1-b03) が命令を順不同で実行していると教えてもらいました。Java仕様でそれが許可されているとは信じられませんが、特定の参照が見つかりません.
ウィキペディアは、単一のスレッドがスレッド内 as-if-serial を強制する必要があると述べているため、私が書いたものと異なる実行順序について心配する必要はありません。 http://en.wikipedia.org/wiki/Java_Memory_Model#The_memory_model
コード例:
このテスト コードを実行すると、完全に非決定論的な動作をします。成功する場合もあれば、最初のアサートで失敗する場合もあれば、2 番目のアサートで失敗する場合もあります。値は常に互いに 1 ~ 2 ミリ秒以内であるため、永続化が完全に失敗しているわけではありません。Thread.sleep(2); の追加 各ステートメントの間にテストが失敗する回数は減りますが、失敗を完全に排除するわけではありません。
これは JVM の障害である可能性がありますか、それともデータベース (MsSql) が格納されたデータの何らかの丸め処理を行っている可能性が高いですか?
c++ - この OpenMP プログラムがシングルスレッドより遅いのはなぜですか?
このコードを見てください。
シングルスレッド プログラム: http://pastebin.com/KAx4RmSJ . 以下でコンパイル:
g++ -lrt -O2 main.cpp -o nnlv2
openMP を使用したマルチスレッド: http://pastebin.com/fbe4gZSn でコンパイル:
g++ -lrt -fopenmp -O2 main_openmp.cpp -o nnlv2_openmp
デュアル コア システムでテストしました (したがって、2 つのスレッドが並行して実行されます)。ただし、マルチスレッド バージョンはシングル スレッド バージョンよりも低速です (また、不安定な時間が表示されます。数回実行してみてください)。どうしたの?どこで間違えたのですか?
いくつかのテスト:
シングルスレッド:
マルチスレッド:
何が悪いのかわかりません。
java - 固定スレッドプログラムの接続プールサイズ
固定スレッドのJavaプログラムがあります。SpringIntegrationとActiveMQで実装されています。ここでの固定スレッドとは、プログラムに複数のスレッドがありますが、実行時のスレッド数は変わらないことを意味します。次に、接続プールのサイズを設定する必要があるので、次のことを知っておく必要があります。
- スレッドの数
- それらのどれが同時にDBに接続する可能性があります。
1.の場合visualVMツールを使用します。
- 2にvisualVMを使用できますか?どのように?
- この問題の別の解決策はありますか?
c#-4.0 - シングルスレッドの Windows サービスが OnStop を遅らせる
プライベート メッセージ キューからメッセージを取得し、メッセージの内容に基づいて、メッセージごとに 1 つ以上の電子メール (通常は最大で 4 つまたは 5 つ) を送信する Windows サービス (C# 4.0) があります。
メッセージの量が少ないので、複雑さを避けてサービスをシングル スレッドのままにしましたが、電子メールは重要であるため、SCM 停止コマンドで処理中のメッセージ/電子メールが停止が完了する前に処理/送信されるようにする必要があります。
OnStop では、ステータスを表す静的な「inProcess」フラグを確認しています。設定されている場合は、ServiceBase.RequestAdditionalTime(120000) を呼び出しています。
2 つの問題があります。
- 停止コマンドは、2 分間の要求にもかかわらず、一部の電子メールが送信されずにすぐに完了します。
- うまくいったとしても、どれだけ待つべきかを推測しているだけです。
シングルスレッドサービスでこれを処理する最良の方法は何ですか?
ご協力いただきありがとうございます!
グレッグ
asp.net - [STAOperationBehavior] 属性を使用して WCF サービスでユーザー情報を取得する
Silverlight対応の WCF サービスがありますが、そのうちの 1 つのメソッドには [STAOperationBehavior] 属性が絶対に必要です。ユーザーのユーザー詳細 (フォーム認証) にアクセスする必要がありますが、[STAOperationBehavior] 属性が適用されている間、Membership.GetUser() は失敗します。
すなわち
しかし
このメソッドでユーザー情報にアクセスするにはどうすればよいですか? または、このメソッドにユーザーの情報を提供するにはどうすればよいですか?
multithreading - 作成されるスレッド数は 12 ですが、12 コア CPU の 1 つのコアでのみ実行されます。
奇妙な問題があります。OpenMP ディレクティブ/関数を使用した Matlab mexfunction があります。並列セクション (parallel for...) の開始前に、コマンドを使用して、作成されたスレッドの数を設定および出力します。
問題は、出力で「スレッド数 = 12」と出力されることですが、それに続く並列セクションがマシンの 12 コアすべてで実行されるわけではありません (ただし、1 コアのみで実行されます)。私のプログラムはずっと前に書かれたもので、以前はそのような問題はありませんでした (12 コアすべてで実行されていました)。最近、システムが破損し、OS (Win 7 Pro) が更新されたバージョンの Matlab 2011b (2010b 以前) で再インストールされました。Visual Studio 2010 Pro もインストールしました。
見逃しているものや見落としているものはありますか?
scala - Scala でシングルスレッドの dll/com メッセージングを行うにはどうすればよいですか? (俳優)
Canon の EDSDK (Eos カメラを制御するため) をセットアップしようとしていますが、User32 Get/DispatchMessages
API を介してコールバックによってイベント ハンドラーを処理する必要があります (少なくとも Windows では)。
イベントのディスパッチには、次のことが必要です。
- メッセージを継続的にディスパッチするためのループ
- SDK が初期化されるのと同じスレッドで発生します。
kritzikratzi の edsdk4j ライブラリで確認できるように、これには基本的に単一のスレッド化されたコマンド レシーバー/メッセージ ディスパッチャー スレッドが必要です (スレッドは66 行目に設定されています)。
Scala にはメッセージを受信するのに最適なアクターがあることを考えると (複数のスレッドからメッセージを受信することができますが、最終的にはこれを行うことができます)、Canon SDK と Windows User32 API へのシングルスレッド アクセスを行うための最良の方法は何ですか?
私はakkaに完全にオープンです(そして興味があります!)
udp - nettyのudpはシングルスレッドモードで実行されていますか?
nettyのudpはシングルスレッドモードで実行されていますか?
NioDatagramChannelFactoryを次のように構成しました。
new NioDatagramChannelFactory(Executors.newFixedThreadPool(4)、4));
しかし、コードをサーバーとして実行し、20を超えるクライアントをランチしてudpパッケージを継続的に送信すると、サーバーは1つのワーカースレッドのみを使用します。
なんで?
javascript - ExtJs: ajax 呼び出しでのコード実行のシーケンスはどうなりますか?
Javascript がシングルスレッド言語であるという事実を考えると、ExtJs での次のコードの実行順序はどうなるでしょうか?
ここで、関数の実行順序は ACDB になりますか?
または
FuncB() が FuncC() または FuncD() の前に呼び出される可能性はありますか? はいの場合、どの条件で?
助けてくれてありがとう。
activex - スレッドがシングルスレッド アパートメントにあるため、ActiveX コントロールをインスタンス化できません。PC をスリープから復帰させた後に発生する
私は、通話の発着信時にブラウザー ウィンドウ (ExtendedWebBrowser) を開く VOIP クライアント (ウィンドウのフォーム) に取り組んでいます。通常は正常に動作しますが、コンピューターがスリープ モードになってから復帰すると、プログラムは次のエラーでクラッシュします。
コードで開始されたスレッドを設定しようとしましたthread.SetApartmentState(ApartmentState.STA)
が、同じ結果が得られます。[STAThread]
また、関数の前に持っていmain()
ます。今、コンピューターがスリープ状態になったときにスレッドが正しく終了しないことにもっと関係があるのではないかと思っていますが、よくわかりません。私のバックグラウンドは C++ と DirectX です。これは私が取り組んだ最初の Windows フォームなので、助けていただければ幸いです。
フォローアップ:プログラムを再開した後、メイン スレッドではなくワーカー スレッドで開始されていることを発見した後、この問題を解決することができました。詳細については、こちらを参照してください:スリープ (サスペンド) および Windows フォームの再開は、メイン スレッドではなくワーカー スレッドでプログラムを開始します。