国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

【轉載】ASP.NET線程安全與靜態(tài)變量的生命周期淺談

2019-11-17 01:27:28
字體:
來源:轉載
供稿:網(wǎng)友

【轉載】asp.net線程安全與靜態(tài)變量的生命周期淺談

ASP.NET線程安全所涉及的是什么呢?讓我們先來看看靜態(tài)變量的生命周期問題,下面是我理解的靜態(tài)變量的生命周期:

void application_Start開始

void Application_End結束的,本來這就是對的

今天要做一個全局的應用,想確認一下,在網(wǎng)上一找,我的天,說什么的都有

大概分三種

1.Application_Start——Application_End

2.session_Start——Session_End

3.類生命周期結束

我用4個機器做了一個測試發(fā)現(xiàn)靜態(tài)變量值一直是不變的,并沒有因為其它用戶登錄而被銷毀,確認應該是Application級的

靜態(tài)類在首次訪問時會調(diào)用靜態(tài)構造器創(chuàng)建類類型對象,類型對象的生存周期是整個應用程序域的生存周期,也就說被訪問過的靜態(tài)類,只有它所在的應用程序域被卸載時才會被卸載。

類的成員分為兩類,靜態(tài)成員(static member)和實例成員(instance member)。靜態(tài)成員屬于類,實例成員則屬于對象,即類的實例。

簡單討論一下在一個類中使用靜態(tài)字段(static field)和靜態(tài)方法(static method)是否會有線程安全問題。

我們在知道, 靜態(tài)字段(static field)和靜態(tài)方法(static method)的調(diào)用是通過類來調(diào)用。靜態(tài)方法不對特定的實例操作,只能訪問靜態(tài)成員。實例方法可對特定的實例操作,既能訪問靜態(tài)成員,也能訪問實例成員。

那么,在多線程中使用靜態(tài)方法是否有ASP.NET線程安全問題?這要看靜態(tài)方法是是引起ASP.NET線程安全問題要看在靜態(tài)方法中是否使用了靜態(tài)成員。

因為,在多線程中使用同一個靜態(tài)方法時,每個線程使用各自的實例字段(instance field)的副本,而共享一個靜態(tài)字段(static field)。所以說,如果該靜態(tài)方法不去操作一個靜態(tài)成員,只在方法內(nèi)部使用實例字段(instance field),不會引起安全性問題。但是,如果該靜態(tài)方法操作了一個靜態(tài)字段,則需要靜態(tài)方法中采用互斥訪問的方式進行安全處理。

舉個簡單的例子,我們使用的Console.WriteLine();中WriteLine()是Console.WriteLine類的靜態(tài)方法。

對于ASP.NET線程安全中, 多個客戶端訪問服務器端, 這是一個多線程的例子.只要理解了原因,我們可以在三層架構中的數(shù)據(jù)訪問層中放心使用靜態(tài)方法(static method)來訪問數(shù)據(jù)庫.

靜態(tài)方法如果沒有使用靜態(tài)變量,則沒有線程安全問題。

為什么呢?因為靜態(tài)方法內(nèi)聲明的變量,每個線程調(diào)用時,都會新創(chuàng)建一份,而不會共用一個存儲單元。每個線程都會創(chuàng)建自己的一份,因此不會有線程安全問題

注意,靜態(tài)變量,由于是在類加載時占用一個存儲區(qū),每個線程都是共用這個存儲區(qū)的,所以如果在靜態(tài)方法里使用了靜態(tài)變量,這就會有線程安全問題!

ASP.NET線程安全及靜態(tài)變量生命周期就向你介紹到這,希望對你理解ASP.NET線程安全和靜態(tài)變量生命周期有所幫助。

本文轉自:http://developer.51cto.com/art/200907/140975.htm


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 文安县| 寻甸| 临朐县| 郯城县| 达日县| 乾安县| 鸡泽县| 惠东县| 分宜县| 辽中县| 庆元县| 项城市| 蒲城县| 金平| 图木舒克市| 如东县| 孝感市| 丹巴县| 巴中市| 鹿邑县| 广西| 桂阳县| 江油市| 安西县| 丰城市| 鲁甸县| 临江市| 仁寿县| 定兴县| 全州县| 攀枝花市| 汽车| 化德县| 葫芦岛市| 卢氏县| 璧山县| 周宁县| 马山县| 都江堰市| 泗阳县| 海淀区|