设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 软件教学 >> 编程开发 >> C#多线程编程实例实战
精品推荐
编程开发点击TOP10
·Java进阶:JNI使用技巧点滴
·专家手把手教你安装MYSQL数据库
·e书工场--制造电子书全攻略
·删除流氓的SQL Server2005
·我的第一个VB程序--“跟我来学VB神童教程”
·Authorware自制拼图游戏
·使用Quick CHM软件轻松编译CHM格式的文件
·DIY自己常用的软件eXeScope
·用Authorware制作自检测在线答题系统
·精细讲述SQL Server数据库备份多种方法
软件教学点击TOP10
·自己动手制作USB启动盘快速简单
·学用金山游侠修改游戏
·几百个软件注册机
·常用软件序列号
·用eBook Edit 自己动手制作exe型电子书
·应用软件注册码大全(最新整理) 1
·Windows Media Player同步歌词秀全攻略
·五分钟玩转电脑迷共享空间
·冰点还原(DeepFreeze)使用帮助
·液晶显示器测试小工具--Monitors Matter CheckScreen
精选专题

C#多线程编程实例实战

作者: 来源:网络文章 时间:2005-12-13 14:49:28

C#多线程编程实例实战(3)
}

//如果有活动线程,等待指定的时间

if( !bNoActive )

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

}

它首先进入临界区判断当前活动线程的数目,如果当前有活动线程存在,不管是写线程还是读线程(m_nActive),线程将等待指定的时间并且等待的写入线程数目加1,否则线程拥有写的权限。

释放阅读锁的函数原型为:public void ReleaseReaderLock()。函数定义如下:

public void ReleaseReaderLock()

{

System.LocalDataStoreSlot slot = Thread.GetNamedDataSlot(m_strThreadSlotName );

LockFlags flag = (LockFlags)Thread.GetData( slot );

if( flag == LockFlags.None )

{
return;

}

bool bReader = true;

switch( flag )

{

case LockFlags.None:

break;

case LockFlags.Writer:

bReader = false;

break;

}

if( !bReader )

return;

Thread.SetData( slot, LockFlags.None );

m_mutex.WaitOne();

AutoResetEvent autoresetevent = null;

this.m_nActive --;

if( this.m_nActive == 0 )

{

if( this.m_nWaitingReaders > 0 )

{

m_nActive ++ ;

m_nWaitingReaders --;

autoresetevent = this.m_aeReaders;

}

else if( this.m_nWaitingWriters > 0)

{

m_nWaitingWriters--;

m_nActive --;

autoresetevent = this.m_aeWriters ;

}

}

m_mutex.ReleaseMutex();

if( autoresetevent != null )

autoresetevent.Set();

}


释放阅读锁时,首先判断当前线程是否拥有阅读锁(通过线程局部存储的标志),然后判断是否有等待的阅读线程,如果有,先将当前活动线程加1,等待阅读线程数目减1,然后置事件为有信号。如果没有等待的阅读线程,判断是否有等待的写入线程,如果有则活动线程数目减1,等待的写入线程数目减1。释放写入锁与释放阅读锁的过程基本一致,可以参看源代码。

共5页 9 7 [1] [2] [3] [4] [58 :>

C#多线程编程实例实战 相关文章:
C#多线程编程实例实战 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com