« ISO 13407 | Main | SAP Design Guild »

20 January 2005

ロック

C#にはlockキーワードがあり、これで共有リソースをロックすることができる。排他制御ということですな。その他にも.NET Frameworkに排他制御の方法がある。


using System.Threading;
private ReaderWriterLock rwl = new ReaderWriterLock();
private int num;

private void ReadMethod()
{
// 読み取りロック開始
parent.rwl.AcquireReaderLock(Timeout.Infinite);
try
{
// 共有リソース読み取り処理
System.Diagnostics.Trace.WriteLine("Number:" + num);
}
finally
{
// 読み取りロック解放
parent.rwl.ReleaseReaderLock();
}
}

private void WriteMethod()
{
// 書き込みロック開始
parent.rwl.AcquireWriterLock(Timeout.Infinite);
try
{
// 共有リソース書き込み処理
num++;
}
finally
{
// 書き込みロック解放
parent.rwl.ReleaseWriterLock();
}
}

実際に私は2つのスレッド間で共有するリソースへのアクセス制御のためにこのReaderWriterLockを使用したが、排他制御だから体感的に遅く感じるのは仕方がないか。ま、こういうのもありますよってことで。

TrackBack

TrackBack URL for this entry:
http://bb.lekumo.jp/t/trackback/517129/31023889

Listed below are links to weblogs that reference ロック:

Comments

Post a comment

Access Ranking

Powered by Six Apart
Sponsored links