タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

concurrencyとalgorithmに関するmsyktのブックマーク (2)

  • Lock-free スナップショットの撮り方を説明してみる - くまメモ

    マルチスレッドなどの環境下で時間経過によって勝手に変化する複数の変数を読みたい場面は多くあります。 しかしCPUは一度に一つしか値を読み書きできないので、簡単には出来ません。 何故なら読んでるそばから値が変動してでたらめな値を読むかも知れないからです。 変動してるものを読むのだから読む側が完璧じゃなくても仕方ないという妥協は有り得ますが 特定のある一瞬の時刻での状態を写真のようにパチリとフィルムに収められたら嬉しいですよね。 一番簡単なのはロックを取りながら読む事ですが、ロックは諸般の事情により使えない事とします。 前提 値が勝手に変動するという状況が分かりにくいと思うので、適当な例えとして卵の孵化を想像してみましょう。 「卵」→「ヒビ」→「ひよこ」 の順でランダムに勝手に進んで行きます。止めることは出来ませんし後戻りもしません。 こんな卵が複数ある孵化器の監視を任されたとします。卵の状態

    Lock-free スナップショットの撮り方を説明してみる - くまメモ
  • Arora's Task Stealing Deque

    作成日:2005.11.27 目次 前置き データ構造 操作 擬似コード 動作 問題点 参考文献 脚注 1. 前置き マルチプロセッサ上で行う並列処理を行うプログラムが、 仕事を均等に N 分割できるものは稀だ。 プログラムの処理コストの最大値や平均値を見積もることができても、 実際の処理時間や消費メモリはプログラムの実行内容によって大きく変わっていく。 そのため各プロセッサに割り当てる負荷(ロード)が均一になるように 負荷分散を行うことが重要になる。 負荷分散を行うためには、 プログラムをある程度の粒度に分割し、 プロセッサ間で担当をやり取りできるようにする。 とりあえずプログラムを分割したものをタスクと呼ぶことにしよう。 タスクをやり取りする方法は、 大雑把に言って三つある。 マネージャーがいて、どのプロセッサがどのタスクを行うか制御する。 暇なプロセッサが、タスクを多く抱えたプロセッ

  • 1