Application与线程同步
昨天写了篇文字《static变量与asp.net 》,说到Application与static member的区别的时候,提到了Application对象的线程安全方面的问题。《线程同步问题:static成员与ASP.NET中的Application对象 》提出了进一步的讨论。今天我又想将昨天没有说清楚地这一部分不补上。
Application对象使用了一个字典来保存所有的对象。对每个对象的读写都会加锁。他的锁分为读与写两种。该锁内部维护了一个int字段。加读锁时等待该变量不为-1(没有处于写状态),将该变量加1,解读锁时将改变量减一;加写锁时等待该变量为0(表示没有任何对象锁定),将该变量赋值为-1,解写锁时将改变量赋值为0。很明显对这个变量的操作是要加排他锁的。
这样的结果就是:一个Application对象处于写状态时,会拒绝其他Application对象的读、写操作;一个Application对象处于读状态时,会拒绝其他Application对象的写操作;即便两个Application对象可以同时读,但他们读操作中,加读锁的动作是排他的。
Application对象使用过程中,加锁的动作会增加不少的性能损失。而不同的Application对象之间的阻塞,也会增加不少损失。
而对于static member,一般情况下读不用作加锁操作。写的时候需要加锁,但一般也不会影响到其他的static member。
转载于:https://www.cnblogs.com/Meyer/archive/2004/04/28/7975.html
Application与线程同步相关推荐
- C#中的线程(二) 线程同步基础
1.同步要领 下面的表格列展了.NET对协调或同步线程动作的可用的工具: 简易阻止方法 构成 目的 Sleep 阻止给定的时间周期 Join 等待另一个线程 ...
- DLL内线程同步主线程研究(子线程代码放到主线程执行)
DLL内线程同步主线程研究(子线程代码放到主线程执行) 我们在实际项目中经常会用到多线程编程,比如Socket编程等,在创建的线程内同步主线程一般使用Synchronize方法实现子线程操作放到主线程 ...
- 线程同步与异步套接字编程
1.利用事件对象来实现线程间的同步 新建一个win32 console application,取名Event,再建一个Event源文件,编辑: #include <iostream.h> ...
- VC++中多线程学习(MFC多线程)三(线程同步包含:原子互锁、关键代码段、互斥器Mutex、Semaphores(信号量)、Event Objects(事件))
目录 线程同步的必要性: 2.解决同步问题的方法 2.1原子互锁家族函数 2.2Critical Sections(关键代码段.关键区域.临界区域) 2.3 互斥器Mutex ...
- 线程基础篇-线程同步
Lock是将一段代码定义为临界区,临界区中的代码在同一时刻只能有一个线程访问,当临界区代码执行时,其他线程调用会被阻塞,需等待资源释放. 语法: private object locker=new o ...
- 01 线程同步机制封装类
01 线程同步机制封装类 RAII RAII全称是"Resource Acquisition is Initialization",直译过来是"资源获取即初始化" ...
- C#线程同步(3)- 互斥量 Mutex
什么是Mutex "mutex"是术语"互相排斥(mutually exclusive)"的简写形式,也就是互斥量.互斥量跟临界区中提到的Monitor很相似, ...
- C#中的线程(中)-线程同步
1.同步要领 下面的表格列展了.NET对协调或同步线程动作的可用的工具: 简易阻止方法 构成 目的 Sleep 阻止给定的时间周期 Join 等待另一个线程 ...
- Python 多线程总结(2)— 线程锁、线程池、线程数量、互斥锁、死锁、线程同步
主要介绍使用 threading 模块创建线程的 3 种方式,分别为: 创建 Thread 实例函数 创建 Thread 实例可调用的类对象 使用 Thread 派生子类的方式 多线程是提高效率的一种 ...
最新文章
- GPU服务器选购指南-思腾合力篇
- 编写程序,输入某年某月,求该月有多少天
- 撕起来了!谁说数据少就不能用深度学习?这锅俺不背!
- CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解!
- ACM入门之【DP】
- java io效率_JAVA IO操作的总结 和速度实验
- boost::fusion::as_deque用法的测试程序
- htmlcss基础知识点表单
- LeetCode 2062. 统计字符串中的元音子字符串
- [Java] 蓝桥杯ALGO-146 算法训练 4-2找公倍数
- ​每一页都是知识点,这本Flutter企业级实践指南太绝了
- 我为什么憎恨Framework
- 凯恩帝数控系统面板介绍_KND凯恩帝数控系统说明书.doc
- starlink卫星轨道预报
- win7设置自动关机
- Android与H5相互接口调用及Android端接口整理
- 零基础无经验,该怎么学编程,要学多久?
- 瑞星微RK3288 开发板(ARM Cortex-A17架构)
- 表达式求值问题数据结构课程设计
- 微信订阅号申请流程及准备材料