0

브라우저에서 두 개의 다른 탭 에 다음 페이지를 엽니 다. 인수에는 잠금 장치가없는작업자 프로세스 스레딩에 대한 혼란

당신이 볼 수 있듯이
protected void Page_Load(object sender, EventArgs e) 
    { 
     Thread.Sleep(10000); 
     Response.Write(DateTime.Now.ToString()); 
    } 

, 그것은 모든 요청에 ​​대해 생성 된 스레드가 있다는 것, 그리고 서로 기다리지 않았다 브라우저 캐시에서 페이지를 입지 않도록 새로 고침 버튼을 누르면 .

이제 다음 페이지를 만들고 GlobalCustomClass

GlobalCustomClass

public class GlobalCustomClass 
    { 
     public static string GlobalVariable 
     { 
      get; 
      set; 
     } 
    } 

Default.aspx를

protected void Page_Load(object sender, EventArgs e) 
     { 
      GlobalCustomClass.GlobalVariable = "Default page"; 
      Thread.Sleep(10000); 
      Response.Write(DateTime.Now.ToString()); 
      Response.Write("<br />"); 
      Response.Write(GlobalCustomClass.GlobalVariable); 
     } 

Page2.aspx

protected void Page_Load(object sender, EventArgs e) 
     { 
      Response.Write(DateTime.Now.ToString()); 
      Response.Write("<br />"); 
      GlobalCustomClass.GlobalVariable = "Page2"; 
      Response.Write(GlobalCustomClass.GlobalVariable); 

     } 

새로 고침 기본 페이지이며 10 초가 경과하기 전에 Page2 ....를 새로 고칩니다. Default.aspx는 "Page2"를 렌더링 중입니다. 예, 스레드로부터 안전하지 않습니다.

이제 두 개의 브라우저 탭에서 다음 페이지를 열고,이 시도 :

protected void Page_Load(object sender, EventArgs e) 
    { 
     Session["x"] = "ABC"; 
     Thread.Sleep(10000); 
     Response.Write(DateTime.Now.ToString()); 
    } 

을 지금은 세션 개체에 첫 번째 스레드 잠금 있다는 것, 그리고 다른 하나는 전체 10 초를 기다릴 필요가!

이제 첫 번째 사례를 시도하지만 프로젝트에 Global.ascx를 삽입하고 무엇인가, 첫 번째 스레드가 무언가를 잠근다 !!!!!

실제 응용 프로그램에서는 세션과 같은 스레드 안전성이 필요한 전역 상태 변수에 액세스하는 것이 일반적입니다.

30 초 내에 렌더링해야하는 보고서가 포함 된 백엔드 응용 프로그램이있는 경우. 60 명의 사용자가 해당 보고서를 열면 사용자 번호 61은 페이지가로드 될 때까지 30 분 동안 기다립니다. 그것은 일반적인 스레드 기아입니다 !! 나는 아마도 해고 당할 것이다 : (

1) 모든 사용자는 요청을 완료 할 때까지 기다리고있다. 무거운 페이지가 문제가 될 수 있습니다. 전체 웹 응용 프로그램을 반응 형으로 만들 수 있기 때문입니다. 동의 하시겠습니까?

2) 어떻게 해결할 수 있습니까?

3) 어떤 주제에서 연구해야합니까? 너는 좋은 책을 안다? 모든 사용자가 다른 때까지 기다리고

감사

+1

음을 알아 내기 위해 읽을 수있는, 당신이 해고보고 불쌍 할 것입니다! 이 사람을 돕자. – usr

+1

http://itackoverflow.com/questions/3629709/i-just-discovered-why-all-asp-net-websites-are-slow-and-i-am-trying-to-work-out –

+0

이 dev에 서버 또는 IIS? –

답변