http://www.gissky.net- GIS空间站

我要投稿 投稿指南 RSS订阅 网站资讯通告:
搜索: 您现在的位置: GIS空间站 >> 技术专栏 >> 软件开发 >> 正文

C#多线程编程实例实战

作者:刘弹    文章来源:ASPCool    点击数:    更新时间:2007-2-2
摘要:
Thread.SetData( slot, (LockFlags)((int)flag | (int)LockFlags.Reader ) );

}


if( bExistingWriter )

{ //等待指定的时间

this.m_aeReaders.WaitOne( millisecondsTimeout, true );

}

}

它首先进入临界区(用以在多线程环境下保证活动线程数目的操作的正确性)判断当前活动线程的数目,如果有写线程(m_nActive<0)存在,则等待指定的时间并且等待的阅读线程数目加1。如果当前活动线程是读线程(m_nActive>=0),则可以让读线程继续运行。

申请写入锁的函数原型为:public void AcquireWriterLock( int millisecondsTimeout ),其中的参数为等待调度的时间。函数定义如下:

public void AcquireWriterLock( int millisecondsTimeout )

{

// m_mutext很快可以得到,以便进入临界区

m_mutex.WaitOne( );

// 是否有活动线程存在

bool bNoActive = m_nActive == 0;

if( !bNoActive )

{

m_nWaitingWriters++;

}

else

{

m_nActive--;

}

m_mutex.ReleaseMutex();

//存储线程锁标志

System.LocalDataStoreSlot slot = Thread.GetNamedDataSlot( "myReaderWriterLockDataSlot" );

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页

Tags:C#  
责任编辑:gissky
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 中国地图