計算機科学において、ソフトウェアトランザクショナルメモリ(英: software transactional memory, STM)は、データベーストランザクションに似た並行性制御機構であり、並列計算を行う際の共有メモリへのアクセス法である。この機構はロックベースの同期を用いた並行性制御の代替手段として機能し、ノンブロッキングな方法で実装される物もある。ここでいうトランザクションとは、共有メモリに対する一連の読み出しと書き込みを実行するコードを意味する。論理的にはこれらの読み出しと書き込みは、時間的なある一点で行われ、他のトランザクションからはその間の状態は見えない。トランザクションを行うためにハードウェアにサポートさせるアイデア(ハードウェアトランザクショナルメモリ)は、1986年に Tom Knight により論文と特許として出された。そのアイデアを普及させたのが Maurice H
アドバイザリ・ロック F_GETLK, F_SETLK, F_SETLKW は、レコード・ロックの獲得/解放/テストのために使用する (レコード・ロックはファイルセグメント・ロックやファイル領域ロックとも呼ばれる)。三番目の引き数 lock は、以下に示すフィールドを含む構造体へのポインタである (フィールドの順序は関係なく、構造体に他のフィールドがあってもよい)。 struct flock { ... short l_type; /* Type of lock: F_RDLCK, F_WRLCK, F_UNLCK */ short l_whence; /* How to interpret l_start: SEEK_SET, SEEK_CUR, SEEK_END */ off_t l_start; /* Starting offset for lock */ off_t l_len;
Concurrency The first DMS document posed a few questions regarding Lucene usage in a multithreaded environment. The DMS must be able to handle concurrent updates and queries. Fortunately, searching and updating of Lucene indexes are non-conflicting operations, which means they can be done at the same time. The result of querying an index which is undergoing updates, is that you will only get resul
前記事から Read/Write Lock のセマフォを使った実装を紹介しています( 記事はこちら )。 さて、前回の実装は Reader が優先される実装になっていて、複数の Reader が絶え間なくアクセスすると Writer は延々と待たされるというものでした。この問題を回避するために、今回は、たまにしか発生しない Writer のアクセスを優先的に処理させるということを考えます。 Writer 優先の Read/Write Lock を実現するために、ここでは2種類のセマフォ操作を行います。まずはセマフォの初期化部分です(今回もあえてC風)。 enum access_t { ReadersWriter, WaitingWriters }; static const short MaxReaders = 100; int semid = semget(IPC_PRIVATE, 2,
A Read/Write Lock is a performance improvement over a standard mutex for cases where reads outnumber writes. The idea is to divide locks up into two classes: reading and writing. Multiple simultaneous read locks may be held, but write locks are exclusively held. The exclusive writing lock ensures that race conditions do not occur, since if one client is writing to the data no other client may rea
Google has released a new OSDI 2006 paper, "The Chubby Lock Service for Loosely-Coupled Distributed Systems". From the paper:Chubby is a distributed lock service intended for coarse-grained synchronization of activities within Google's distributed systems. Chubby has become Google's primary internal name service; it is a common rendezvous mechanism for systems such as MapReduce; the storage system
ロックの目的 アプリケーション側のデータが古くなっている場合、古い内容でDBを上書きしないことを保障するために行います。銀行のATMなどが例で用いられることが多いです。 ▲ ▼ 暗黙的ロック(oracle内部のロック機構) 実現方法 oracleが自動的に試行するロック Insert/Update/Deleteの対象レコードに対して、トランザクションが完了するまでロックがかかる メリット ロックにかかる時間が短いため同時実効性が高い アプリケーション側でほとんど意識する必要がない デメリット デッドロックのリスクがある(書き込み順序を徹底する必要がある) 読み込み時点から更新までの間に他者がデータを書き換えるリスクがある ▲ ▼ 明示的ロック(oracle内部のロック機構) 実現方法 明示的に表ロックを獲得する(Lock Table ...) 明示的に行ロックを獲得する(Select
An EXCLUSIVE lock is needed in order to write to the database file. Only one EXCLUSIVE lock is allowed on the file and no other locks of any kind are allowed to coexist with an EXCLUSIVE lock. In order to maximize concurrency, SQLite works to minimize the amount of time that EXCLUSIVE locks are held. The operating system interface layer understands and tracks all five locking states described abov
ISAM/MyISAM および HEAP テーブルのテーブルロック、BDB テーブルのページレベルロック、InnoDB テーブルの行レベルロックのみが、MySQL で現在サポートされています。 See 項5.3.1. 「MySQL のテーブルロック方法」。 INSERT ステートメント間に競合がない場合(レコードまたはデータの削除による空き領域を埋めるのではなく、テーブルファイル末尾に追加する場合はいつでも)、MyISAM テーブルでは INSERT と SELECT をロックなしで自由に組み合わせることができます。 バージョン 3.23.33 からは、システムにおけるテーブルロックの競合を Table_locks_waited および Table_locks_immediate 環境変数を確認して分析できるようになりました。 テーブル型を行レベルロックと共に使用するかどうかを決定するには
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く