日期:2014-05-18  浏览次数:20362 次

asp.net每一个画面实例都是在新的一个thread里面吗?
问题1:asp.net每一个画面实例都是在新的一个thread里面吗?
问题2:asp.net中,同一台机器上,两个IE打开同一个画面,都是在新的一个thread里面吗?

想用System.Threading.Thread.SetData()方法,但是又怕不同的request之间会有影响。。。

基本的概念性问题我都不会,耻辱阿:(


------解决方案--------------------
你试一下就知道了. 结过测试就发现,同一个session的页面,是一个thread.
------解决方案--------------------
学习了~~

------解决方案--------------------
没有测试过,还是一楼精细。
------解决方案--------------------
学习了
------解决方案--------------------
得去问微软了,哈哈
------解决方案--------------------
.....太低层的问题了。。。。
反编译.net framework我想一定可以得到答案
------解决方案--------------------
对这个说法稍稍怀疑一下

举个例子,如果session的timeout设为60分钟
假设用户A在访问了一次之后,空闲了55分钟,然后再访问,那在这段时间中这个thread一直处于等待状态而无法被其他用户使用?这明显有现实的,ms也不会那么笨吧。

手边没环境,没法具体测试,但按照我对asp.net的理解,
在server中asp.net的进程中也是维护了一个线程池,每次在有request提交的时候,它会选出一个空闲的thread,分析http包,创建Context,Request,Session等对象,同时根据url和VIEWSTATE的值创建Page对象,再根据form中的值来调用handler

当线程池中没有的空闲的话,就会再创建thread,达到最大值就403了

所以,session和thread应该是“多对多”的关系,一个用户的session可能被多个thread处理(当然在每次request中只有一个),一个thread在整个生命周期中也会处理多个session(?还是说request更准确些)

不一定完全正确,大家继续讨论~


------解决方案--------------------
同意 mmqingfeng(漠漠青峰) 观点


所以,session和thread应该是“多对多”的关系,一个用户的session可能被多个thread处理(当然在每次request中只有一个),一个thread在整个生命周期中也会处理多个session(?还是说request更准确些)
------------------------------------------------
以上,每次reqeust一次就一个thread,但是和Session没有任何关系。
不知道是否可以这样了解?

------解决方案--------------------
路过
------解决方案--------------------
mmqingfeng(漠漠青峰) ( ) 信誉:99 2007-9-20 14:59:12 得分: 0 支持
本人比较倾向于多对多
------解决方案--------------------
同意 mmqingfeng(漠漠青峰) 观点
------解决方案--------------------
恩,内部怎么运行就不清楚了。多线程是肯定的。不然全局变量的lock还有什么意义
------解决方案--------------------
问题2:应该是2个线程
------解决方案--------------------
每一个request,asp。net domain就会创建一个新的httpapplicaion
------解决方案--------------------
单纯回答lz的问题的话,应该就是说:不安全!

lz还是说一下想实现什么样的功能比较好
------解决方案--------------------
好贴,学习中...