タグ

lockに関するblueleのブックマーク (6)

  • Redis::DistMutex – 時限付き分散ロックで効率良くサイトクロールをしよう | VASILY DEVELOPERS BLOG

    はじめまして。バックエンドエンジニアの吉田です。 2013年5月末の入社以降、大量のEC2インスタンスのVPC移行を担当した後、今はiQONの商品DBを支えるクローラーの改善に取り組んでいます。今回はその改善の1つとして開発したRedis::DistMutexという分散ロック機構のruby実装を紹介をしようと思います。 Redis::DistMutex 開発の経緯や細かい設計の話は後述するとして、まずはつくったgemの紹介をします。 Redis::DistMutex Redisベースの分散ロック機構 rubyのライブラリにあるMutex互換 スレッド間だけでなく、プロセス間・ホスト間でも共有できるMutex 時限つきロックの作成が可能(redisのsetnxとexpireを活用) namespaceを指定できるので、特定の処理ごとにロックの作成が可能 redis2.6以上のみサポート(1秒

    Redis::DistMutex – 時限付き分散ロックで効率良くサイトクロールをしよう | VASILY DEVELOPERS BLOG
  • Scala で ReadWriteLock にローンパターンを使う - サイエンスデザインノート

    ReadWriteLock は確実にロックを解除しないといけません。 readWriteLock.writeLock().lock(); try { // 何かの処理 } finally { readWriteLock.writeLock().unlock(); } いけませんが、よく忘れます。unlock() がコピペの魔術かなにかで lock() になったままとか。writeLock() をロックして readLock() をロック解除とか。 try-finally 句を使ってロックは確実にロック解除させるべきですが、ロックをかけるだけでコードが助長になります。 確実にリソースを閉じるときなど、ローンパターンを用いた using (with) 句がとても便利です。ということで、Scala で ReadWriteLock をするとき(あまり無いんじゃないかという話もありますが)、ローンパ

    Scala で ReadWriteLock にローンパターンを使う - サイエンスデザインノート
  • マルチスレッド

    <Read-Write Lock> (1)ReentrantReadWriteLock Read-Write Lockは「読む処理」と「書く処理」に分けてロックを取ります。 「読む処理」X「書く処理」または「書く処理」X「書く処理」の時にはロックをかけますが 「読む処理」X「読む処理」の時にはロックをかけません。 読み込み処理が多い時または読み込み処理に時間がかかる場合など、一般的な排他制御より効率が期待されます。 java.util.concurrent.locks.ReentrantReadWriteLockクラスを使えば、Read-Write Lockの機能が容易に実現できます。 Read-Write Lockのパターンは lock try { 処理 } finally { unlock } のようにfinally節で必ずロックを開放しなければいけません。 ●Read-Write L

    bluele
    bluele 2013/08/25
    read-write lock
  • Non-blocking STMについて頑張って説明してみる - くまメモ

    STMはソフトウェアトランザクショナルメモリの略です。 ↓とりあえずwikipedia http://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB%E3%83%A1%E3%83%A2%E3%83%AA 日でSTMの話題を検索すると「楽観的ロックでしょ?」といった発言を見かける事が多く、確かに実用的な手法の多くはロックベースだったりしていますが、正直なところロックベースな手法のSTMはデータベースでのトランザクションと似ているフシがあったりしてデータベースに詳しい人からするとそれほど驚くような手法ではない事が多いのです。その

    Non-blocking STMについて頑張って説明してみる - くまメモ
  • PY習 threadingモジュール(2)

    threadingモジュール 2回目 Lock, RLockオブジェクトについて試しました。 [目次] [1]スレッドの生成 ・・・・threadingモジュール(1) Thread オブジェクト [2]スレッド間の同期1 ・・・・threadingモジュール(2) Lock, RLock オブジェクト    <章> [3]スレッド間の同期2 ・・・・threadingモジュール(3) Condition, Semaphore オブジェクト [4]スレッド間の同期3 ・・・・threadingモジュール(4) Event, Timer, Barrier オブジェクト [5]同期Queue ・・・・queueモジュール Queueオブジェクト [6]スレッド化による性能 ・・・・threadingモジュール(5) スレッド化による性能の変化に関して threadingモジュールの、Lock

  • Python でスレッド - hidemonのブログ

    Python のスレッドについてちょっと調べてみた. Javaだとselectがない(new IOを使うとそれっぽくは書けるが, すごく面倒) ので, スレッドがないと通信系のプログラムが書けないけど, Pythonにはちゃんとselectがあるので, これまであまり使ってこなかった. でも, やっぱりちゃんと勉強しておこうということで. Pythonにはスレッド用のモジュールとして, thread と threading の二つがある. 前者は非常に基的なスレッドとロックオブジェクトを提供していて, 後者は前者を用いて構築された, より抽象度の高いスレッドライブラリ, という位置づけらしい. プログラマは基的に後者だけ見てればいいのだろう. threadingが提供するオブジェクトは, 次の7つ. Thread:スレッド Lock:排他ロック RLock: リエントラントな排他ロック

    Python でスレッド - hidemonのブログ
  • 1