タグ付けされた質問 「concurrency」

コンピュータサイエンスでは、同時実行性は複数の計算を重複する期間で実行できるシステムの特性です。計算は、同じチップの複数のコアで実行されたり、同じプロセッサでプリエンプティブに時分割されたスレッドで実行されたり、物理的に分離されたプロセッサで実行されたりします。



18
並行プログラミングと並列プログラミングの違いは何ですか?
並行プログラミングと並列プログラミングの違いは何ですか?私はグーグルに尋ねましたが、その違いを理解するのに役立つものは何も見つかりませんでした。両方の例を教えていただけますか? 今のところ私はこの説明を見つけました:http : //www.linux-mag.com/id/7411-「並行性はプログラムのプロパティです」vs「並列実行はマシンのプロパティ」では十分ではありません-それでも私は何が何であるか言うことができません。

15
SET NOCOUNT ONの使用法
SET NOCOUNTについて異なる見解があるこの質問に触発されて ... SQL ServerにはSET NOCOUNT ONを使用する必要がありますか?そうでない場合、なぜそうではないのですか? 何それがない 2011年7月22日に、編集6 DMLの後に「影響を受けるxx行」メッセージを抑制します。これは結果セットであり、送信時にクライアントはそれを処理する必要があります。小さいですが、測定可能です(以下の回答を参照) トリガーなどの場合、クライアントは複数の「影響を受けるxx行」を受け取ります。これにより、一部のORM、MS Access、JPAなどであらゆる種類のエラーが発生します(以下の編集を参照)。 バックグラウンド: 一般的に受け入れられているベストプラクティス(この質問までは考えていました)はSET NOCOUNT ON、SQL Serverのトリガーとストアドプロシージャで使用することです。私たちはどこでもそれを使用し、簡単なグーグルは多くのSQL Server MVPも同意することを示しています。 MSDNは、これが.net SQLDataAdapterを破壊する可能性があると述べています。 これは、SQLDataAdapterが「影響を受ける行数n」のメッセージが一致することを期待しているため、まったく単純なCRUD処理に限定されていることを意味します。だから、私は使用できません: 重複を避けるために存在する場合(行はメッセージに影響しません)注:注意して使用してください 存在しない場所(予想される行が少ない場合) ささいな更新を除外する(たとえば、実際に変更されるデータはない) 前にテーブルへのアクセスを行う(ロギングなど) 複雑さや正規化を隠す 等 marc_s(彼のSQLを知っている人)の質問では、これを使用しないでください。これは私が思うこととは異なります(私もSQLである程度有能であると私は考えています)。 何か不足している可能性があります(明らかなことを自由に指摘してください)が、そこにいる人々はどう思いますか? 注:SQLDataAdapterを最近使用していないため、このエラーが発生してから数年が経ちました。 コメントと質問の後の編集: 編集:その他の考え... 複数のクライアントがあります。1つはC#SQLDataAdaptorを使用し、もう1つはJavaのnHibernateを使用します。これらは、によってさまざまな方法で影響を受ける可能性がありますSET NOCOUNT ON。 ストアドプロシージャをメソッドと見なす場合、内部処理の一部が独自の目的で特定の方法で機能すると想定することは不適切な形式(アンチパターン)です。 編集2:nHibernateの質問を破るトリガー、SET NOCOUNT ON設定できない場所 (そして、それはこれの複製ではありません) 編集3:私のMVPの同僚のおかげで、さらに詳しい情報 KB 240882、SQL 2000以前で切断を引き起こす問題 パフォーマンス向上のデモ 編集4:2011年5月13日 指定されていない場合、Linq 2 SQLも壊れますか? …

8
同期(これ)を使用できるのに、なぜReentrantLockを使用するのですか?
私が使用できる場合、並行性のロックが非常に重要になる理由を理解しようとしていますsynchronized (this)。以下のダミーコードでは、次のいずれかを実行できます。 メソッド全体を同期するか、脆弱な領域を同期します(synchronized(this){...}) または、脆弱性のあるコード領域をReentrantLockでロックします。 コード: private final ReentrantLock lock = new ReentrantLock(); private static List<Integer> ints; public Integer getResult(String name) { . . . lock.lock(); try { if (ints.size()==3) { ints=null; return -9; } for (int x=0; x<ints.size(); x++) { System.out.println("["+name+"] "+x+"/"+ints.size()+". values >>>>"+ints.get(x)); } } finally { lock.unlock(); } …

9
「Java Concurrency In Practice」はまだ有効ですか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 3年前休業。 この質問を改善する ある練習でのJava並行処理がまだ有効?この本で説明されているアイデア、概念、実装が最新のJavaバージョンに引き続き準拠しているかどうか疑問に思っています。 2006年に最新版が出来たのでお願いします。



16
Pythonで100,000のHTTPリクエストを送信する最も速い方法は何ですか?
100,000のURLを持つファイルを開いています。各URLにHTTPリクエストを送信し、ステータスコードを出力する必要があります。私はPython 2.6を使用していますが、これまでのところ、Pythonがスレッド化/並行処理を実装する多くの混乱する方法を見てきました。私はpythonの並行処理ライブラリも調べましたが、このプログラムを正しく作成する方法を理解できません。誰かが同様の問題に遭遇しましたか?私は一般に、Pythonで何千ものタスクを可能な限り高速に実行する方法を知る必要があると思います-それは「並行して」を意味すると思います。
286 python  http  concurrency 

6
それでも内部的にスレッドに依存している場合、Node.jsは本質的にどのように速くなりますか?
私は次のビデオを見ました。Node.jsの概要ですが、速度の利点をどのように得るかがまだわかりません。 主に、ある時点でRyan Dahl(Node.jsの作成者)は、Node.jsはスレッドベースではなくイベントループベースであると述べています。スレッドは高価であり、利用するコンカレントプログラミングの専門家にのみ任せるべきです。 その後、彼は、独自のスレッドプールを内部に持つ、基になるC実装を持つNode.jsのアーキテクチャスタックを示します。したがって、Node.js開発者は自分のスレッドを開始したり、スレッドプールを直接使用したりすることはありません。非同期コールバックを使用します。それだけ私は理解しています。 私が理解していないのは、Node.jsがまだスレッドを使用しているという点です...これは実装を非表示にするだけなので、50人が50個のファイル(現在メモリ内にない)を要求すると、50スレッドは必要ない場合、これはどのように速くなりますか? 唯一の違いは、Node.js開発者は内部で管理されているため、スレッド化された詳細をコーディングする必要はないが、その下では依然としてスレッドを使用してIO(ブロッキング)ファイル要求を処理していることです。 それで、あなたは本当に1つの問題(スレッド)を取り、その問題がまだ存在している間それを隠すことではないですか?主に複数のスレッド、コンテキスト切り替え、デッドロック...など? ここにはまだ理解していない詳細があるはずです。



8
Javaにおける揮発性vs静的
これはstatic、すべてのオブジェクトvolatileの値の1つのコピーを意味し、すべてのスレッドの値の1つのコピーを意味するというのは正しいでしょうか。 とにかく、static変数の値もすべてのスレッドで1つの値になるので、どうしてそうする必要があるのvolatileでしょうか。

12
AsyncTaskは本当に概念的に欠陥があるのですか、それとも何か不足していますか?
私は今月この問題を調査してきましたが、さまざまな解決策を考え出しましたが、それらはすべて大規模なハックなので、満足できません。デザインに欠陥のあるクラスがフレームワークに組み込まれ、誰もそれについて話していないとはまだ信じられないので、私は何かを逃しているにちがいないと思います。 問題はにありAsyncTaskます。ドキュメントによると 「スレッドやハンドラーを操作しなくても、UIスレッドでバックグラウンド操作を実行して結果を公開できます。」 次に、例では引き続き、いくつかの例示的なshowDialog()メソッドがで呼び出される方法を示しますonPostExecute()。ただし、ダイアログを表示するには常に有効なへの参照が必要であり、AsyncTask がコンテキストオブジェクトへの強い参照を保持してはならないため、これは私には完全にContext不自然に思われます。 その理由は明らかです。タスクをトリガーしたアクティビティが破棄された場合はどうなりますか?これは常に発生する可能性があります。たとえば、画面をめくった場合などです。タスクは、それを作成したコンテキストへの参照を保持したい場合、あなたは(ウィンドウが破壊されているでしょうし、無用なコンテキストオブジェクトへの上に保持しているだけでなく、任意の UIの相互作用が例外で失敗します!)、あなたもAを作成する危険性メモリーリーク。 私のロジックにここで欠陥がない限り、これは次のように変換されます:onPostExecute()コンテキストにアクセスできない場合にこのメソッドをUIスレッドで実行するのはどのようなメリットがあるので、これはまったく役に立たないのですか?ここでは意味のあることは何もできません。 回避策の1つは、コンテキストインスタンスをAsyncTaskに渡すのではなく、Handlerインスタンスを渡すことです。これは機能します。ハンドラーはコンテキストとタスクを緩やかにバインドするため、リークの危険を冒すことなく、それらの間でメッセージを交換できます(正しいですか)。しかし、それはAsyncTaskの前提、つまりハンドラーに煩わされる必要がないということは間違っていることを意味します。同じスレッドでメッセージを送受信しているため、ハンドラーを悪用しているようにも見えます(UIスレッドでメッセージを作成し、UIスレッドで実行されるonPostExecute()で送信します)。 さらに、その回避策を使用しても、コンテキストが破棄されたときに、それが起動したタスクの記録がないという問題があります。つまり、たとえば画面の向きが変わった後など、コンテキストを再作成するときにタスクを再起動する必要があります。これは遅く、無駄です。 これに対する私の解決策(Droid-Fuライブラリで実装されている)は、WeakReferencesのコンポーネント名から、一意のアプリケーションオブジェクトの現在のインスタンスへのマッピングを維持することです。AsyncTaskが起動すると、そのマップに呼び出しコンテキストが記録され、コールバックごとに、そのマッピングから現在のコンテキストインスタンスがフェッチされます。これにより、失効したコンテキストインスタンスを参照することがなくなり、コールバック内の有効なコンテキストに常にアクセスできるため、そこで有効なUI作業を実行できます。また、参照が弱く、特定のコンポーネントのインスタンスが存在しなくなったときにクリアされるため、リークも発生しません。 それでも、これは複雑な回避策であり、いくつかのDroid-Fuライブラリクラスをサブクラス化する必要があるため、これはかなり煩わしいアプローチになります。 今私は単に知りたいです:私は何かを大規模に欠落していますか、それともAsyncTaskは本当に完全に欠陥がありますか?あなたの経験はどのように機能していますか?これらの問題をどのように解決しましたか? ご入力いただきありがとうございます。

10
なぜwait()は常に同期ブロックでなければならないのですか?
を呼び出すにはObject.wait()、この呼び出しを同期ブロックに配置する必要がありますIllegalMonitorStateException。そうでない場合はがスローされます。しかし、この制限を設ける理由は何ですか?私はそれwait()がモニターを解放することを知っていますが、なぜ特定のブロックを同期させてモニターを明示的に取得し、次に呼び出しによってモニターを解放する必要があるのwait()ですか? wait()同期されたブロックの外部で呼び出すことが可能で、そのセマンティクスを保持する-呼び出し元のスレッドを一時停止する可能性がある場合、どのような損害が考えられますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.