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

同期やデッドロックなどの並行性の問題に関する質問。

5
並列プログラミングと並行プログラミングの違いは?
並行プログラミングを見るとき、2つの用語、つまり並行と並列が一般的に使用されます。 また、一部のプログラミング言語は、Javaなどの並列プログラミングのサポートを明確に主張しています。 これは、並列プログラミングと並行プログラミングが実際に異なることを意味しますか?

3
ピーターソンとデッカーのアルゴリズムの対比
ピーターソンとデッカーのアルゴリズムは非常によく似ており、多くの対称性を示しています。 私は次のような非公式言語でアルゴリズムを定式化しようとしました: Peterson's: "I want to enter." flag[0]=true; "You can enter next." turn=1; "If you want to enter and while(flag[1]==true&&turn==1){ it's your turn I'll wait." } Else: Enter CS! // CS "I don't want to enter any more." flag[0]=false; Dekker's: "I want to enter." flag[0]=true; "If you want to enter …


2
「真の並行性」とはどういう意味ですか?
参照なしで「真の同時実行セマンティクス」や「真の同時実行等価性」などのフレーズをよく耳にします。これらの用語は何を意味し、なぜ重要なのですか? 同時実行の真の等価性の例とその必要性は何ですか?例えば、どの場合に、それらはより多くの標準的な同等物(二刺激、微量同等物など)よりも適用可能ですか?

3
主要なプロセス代数の類似点と相違点
私の知る限り、3つの主要なプロセス代数があり、並行性の正式なモデルに関する広範な研究に影響を与えています。これらは: CCSと -calculusはともにRobin Milnerによるππ\pi Tony HoareによるCSPおよび Jan BergstraとJan Willem KlopによるACP 3つすべては、今日まで非常に活発な支持者を抱えているようで、膨大な量の研究が行われています。 これらのアプローチの主な類似点と相違点は何ですか?分野を統一する普遍的なモデルはないという意味で、プロセス代数の研究が収束するのではなく分岐するのはなぜですか?

1
ロックのない、一定の更新時間の同時ツリーデータ構造?
私は最近少しの文献を読んでいて、かなり興味深いデータ構造を見つけました。 更新時間を最悪の場合の更新時間まで下げるさまざまな方法を調査しました[1-7]。O(1)O(1)\mathcal{O}(1) 最近、効率的な同時アクセスをサポートするために、ロックフリーのデータ構造の調査を開始しました。 これらの最悪の場合の更新時間技術は、ロックフリーデータ構造の実装に使用されていますか?O(1)O(1)\mathcal{O}(1) 私が尋ねるのは; 私には、それらはこの「理論的強化」の明らかな実際的な拡張のように思えます。 タージャン、ロバート・エンドレ。「O(1)ローテーションでのバランスの取れた検索ツリーの更新。」情報処理レター16、no。5(1983):253 – 257。 Driscoll、JR、N Sarnak、DD Sleator、およびRE Tarjan。「データ構造の永続化」。第18回コンピューティング理論に関する年次ACMシンポジウムの議事録、109–121。STOC '86。ニューヨーク、ニューヨーク、アメリカ:ACM、1986。 Levcopoulos、C。、およびMark H. Overmars。「O(1)最悪の場合の更新時間を備えたバランスの取れた検索ツリー。」Acta Inf。26、いいえ。3(1988年11月):269–277。 フライシャー、ルドルフ。O(1)ワーストケース更新時間を備えた単純なバランスの取れた検索ツリー ディーツ、ポールF、ラジーエフラマン。「一定の更新時間のフィンガー検索ツリー。」情報処理レター52、いいえ。3(1994):147 – 154。 Lagogiannis、George、Christos Makris、Yannis Panagis、Spyros Sioutas、Kostas Tsichlas。「最悪の場合の一定の更新時間を備えた新しい動的なバランスの取れた検索ツリー。」J. Autom。ラング。櫛。8、いいえ。4(2003年7月):607–632。 Brodal、GerthStølting、George Lagogiannis、Christos Makris、Athanasios Tsakalidis、Kostas Tsichlas。「ポインターマシンでの最適な指探索ツリー」。J。Comput。システム。科学 67、いいえ。2(2003年9月):381–418。

6
コミットされていないトランザクションを逆順に元に戻す必要があるのはなぜですか?
いくつかのトランザクションが勝つ(クラッシュの前にコミットされる)、いくつかのトランザクションが失われる(まだコミットされていない)データベースログがあります。授業で、敗者の行動は元に戻す必要があることを学びました。 これを逆方向に行う理由はありますか?誰でも前方への取り消しが間違った結果をもたらすログの簡単な例を与えることができますか?

1
テストと設定またはスワップなしのハードウェアロックの実装はありますか?
ロックは、通常、テストと設定およびスワップマシンレベルの命令によって実装されます。これらを使用しない他の実装はありますか? また、クリティカルセクションの問題に対するすべてのハードウェアレベルのソリューションは、割り込みの無効化、テストと設定、およびスワップの3つだけに分類できると言えますか?


1
アクターモデルと通信シーケンシャルプロセス(CSP)の違い
私たちが見てみると俳優のモデルと通信シーケンシャル、プロセス、我々は、彼らが両方やろうとしていることがわかり同時実行をに基づいてメッセージパッシング、まだ彼らは別個のものです。 (私たちは、の実装を参照CSPモデルに行く-LANGのゴルーチン(とClojureのの core.async)とにおけるアクターモデルScalaの アッカのツールキット) アクターモデルとCSPの違いの簡単なリストを取得しようとしています。これまでのところ: アクターのメッセージの受け渡しは非同期で、CSPメッセージの受け渡しは同期です アクターは構成可能であり、CSPは(必ずしも)構成可能ではありません 俳優は常に持っている無限の非決定論、CSPがいるかもしれ有界または非有界非決定論を アクターには可変トポロジがあり、CSPには固定トポロジがあります アクターには局所性の原則があり、CSPには局所性がありません 俳優はその行動を中心に設計されていますが、CSPには必ずしもそうとは限りません これは正しいです?不足しているものはありますか? 仮定 「俳優モデル」と言うとき-私はScalaのAkkaフレームワークでの実装の背後にある理論的基礎を意味します

2
スタックベースのプログラミング言語を同時に実行することはできますか?
FORTHやCatなどのスタックベースのプログラミング言語について読んでいますが、その性質を考えると、パラダイムに関係なく、一度に1つのアクションしか実行できないようです(FORTHは必須ですが、Catは機能的です)。 命令型言語はスタックを変更し、Joyなどの純粋に機能的な言語は新しいスタックを返しますが、ポイントは一度に1つのスタックのみが使用されることです。 それでは、スタックベースのプログラミング言語は並行することができますか?複数のスタックを同時に使用するなどして、並行性を実現できますか? スタックベースのプログラミング言語で遅延評価を実装することは可能ですか? 上記の言語と概念について誤解している場合は修正してください

3
線形化が必要なのは誰ですか?
レプリケートされたデータベースなどのレプリケートされたシステムの一貫性基準である、直列化可能性と線形化可能性の違いについて読んでいます。ただし、直列化可能性よりも強力な場合でも、どの場合に線形化可能性が必要になるかはわかりません。 このような強力なプロパティが実際に必要になるシナリオを考えていただけますか?

2
CPUアーキテクチャは手続き型ランタイムに偏っていますか?
Rustのような同時実行時のパフォーマンスを向上させるためにCPUに変更を加えることはできますか?たとえば、同時実行に役立つ分岐予測の実装またはキャッシュサイズに変更はありますか? 現在のCPU設計は、Cのような手続き型ランタイムに対してより最適化されるかもしれないという印象を持っています。 例示のために、手続き予測コードを分析する研究論文に描かれた一般化に基づいて、分岐予測が実装されました。並行性の抽象化により、既存の分岐予測アルゴリズムに悪影響を与える重要なワーキングセットがランタイムに追加されるのではないかと思っています。たとえば、forループでの予測は1つのことですが、ブランチのターゲットが常にメモリの新しい部分(グラフィック、テキストなど)である場合、常にキャッシュミスであり、ブランチはありません。それの歴史-どちらもまだ触れていないからです。 これはおそらく馬鹿げた質問です。なぜなら、コンテンツは常にRAMにあるかもしれませんが、使用されるよりも小さい桁に分岐するからです(キャッシュに読み込まれたら)。手続き型ランタイムのキャッシュおよび分岐予測子に保存されているコンテキストの観察可能な時間境界である必要があります。これは、より並列化された環境で抽象化境界として明示されます。だから私は疑問に思う...これらの境界は観察されましたか?これを分析した研究論文はありますか? CPUアーキテクチャは、同時実行コードよりも手続き型コードに偏っていますか?または、最新のCPUは汎用性が高く、高度な同時実行言語が問題になりませんか?

2
インメモリインデックスに適したスナップショットテーブルデータ構造
私は、非常に具体的なユースケース向けにインメモリオブジェクトデータベースを設計しています。単一のライターですが、効率的な同時読み取りをサポートする必要があります。読み取りは分離する必要があります。クエリ言語はありません。データベースは次のもののみをサポートします。 属性/属性のセットによってオブジェクト/ -sを取得します(式のサポートがあるかもしれません、例えばx.count < 5) オブジェクトの属性を取得 クエリは、上記の任意の数の操作で構成される必須のスクリプトです。データサイズは<<メモリであるため、ほとんどの属性のすべてのオブジェクトとインデックスは、スワップすることなく快適に収まるはずです。 必要なのは、オブジェクトの属性インデックスのデータ構造です。これは、書き込み時のO(n)であり、書き込みの同時実行性をサポートしませんが、理想的にはO(1)スナップショット(書き込み時のコピー)およびO(logN)アクセスをサポートする必要があります。理想的には、バージョン間で最大限の構造共有を行うことで、読み取りの同時実行性を高めることができます。 私はCTries、コンカレントBST、コンカレントスプレイツリーを見ていましたが、ここで本当に正しい方向を見ているかどうかはわかりません。上記の構造は、私が気にしない挿入の複雑さに多くの注意を払っています。 質問:すぐに使用できるユースケースに適した既知のデータ構造はありますか? 編集:もう少し考えた後、永続的なBST / Splayツリーが機能するようです。ライターは「マスター」コピーを更新し、クエリは実行の開始時にツリーを取得し、完了後に破棄します。しかし、より良い解決策があるかどうかはまだ興味があります。


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