SlideShare une entreprise Scribd logo
1  sur  19
Lockfree queue
Lockfree って? ,[object Object],[object Object],[object Object]
Lockfree って? ,[object Object],[object Object],[object Object],ロックを用いない並列データ構造を Lockfree データ構造と言う
Lockfree queue は? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
基本戦略(1/3) ,[object Object],[object Object],[object Object],A B C1 C2 C3 CAS CAS CAS
基本戦略(2/3) ,[object Object],[object Object],A B C1 C2 C3 成功 失敗 失敗
基本戦略(3/3) ,[object Object],[object Object],[object Object],A B C1 C2 C3 CAS CAS
初期状態 ,[object Object],Tail Head Dummy NULL
キューへの挿入(1/5) ,[object Object],[object Object],Tail Head Dummy New CAS ①
キューへの挿入(2/5) ,[object Object],[object Object],[object Object],Tail Head Dummy New CAS ← 失敗するかも ②
キューへの挿入(3/5) ,[object Object],[object Object],Tail Head Dummy New
キューへの挿入(4/5) ,[object Object],[object Object],Tail Head Dummy New CAS
キューへの挿入(5/5) ,[object Object],Tail Head Dummy New
キューからの取り出し(1/5) ,[object Object],[object Object],[object Object],Tail Head A B Dummy A ①
キューからの取り出し(2/5) ,[object Object],[object Object],[object Object],Tail Head A B A が deque される CAS A ② ③
キューからの取り出し(3/5) ,[object Object],[object Object],Tail Head Dummy B
キューからの取り出し(4/5) ,[object Object],[object Object],Tail Head Dummy A
キューからの取り出し(5/5) ,[object Object],[object Object],Tail Head Dummy A CAS
まとめ ,[object Object],[object Object],[object Object],[object Object]

Contenu connexe

Tendances

カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
 

Tendances (20)

Consistent hash
Consistent hashConsistent hash
Consistent hash
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
LLVM最適化のこつ
LLVM最適化のこつLLVM最適化のこつ
LLVM最適化のこつ
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリームC# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
 
キャッシュコヒーレントに囚われない並列カウンタ達
キャッシュコヒーレントに囚われない並列カウンタ達キャッシュコヒーレントに囚われない並列カウンタ達
キャッシュコヒーレントに囚われない並列カウンタ達
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ
 
Raft
RaftRaft
Raft
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
Lockfree list
Lockfree listLockfree list
Lockfree list
 

En vedette (10)

What is jubatus (short)
What is jubatus (short)What is jubatus (short)
What is jubatus (short)
 
What is jubatus? How it works for you?
What is jubatus? How it works for you?What is jubatus? How it works for you?
What is jubatus? How it works for you?
 
よくわかるHopscotch hashing
よくわかるHopscotch hashingよくわかるHopscotch hashing
よくわかるHopscotch hashing
 
Cache obliviousの話
Cache obliviousの話Cache obliviousの話
Cache obliviousの話
 
Lockfree Priority Queue
Lockfree Priority QueueLockfree Priority Queue
Lockfree Priority Queue
 
SkipGraph
SkipGraphSkipGraph
SkipGraph
 
トランザクション入門
トランザクション入門 トランザクション入門
トランザクション入門
 
Bloom filter
Bloom filterBloom filter
Bloom filter
 
地理分散DBについて
地理分散DBについて地理分散DBについて
地理分散DBについて
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 

Lockfree Queue

  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.