C#静态方法在多用户并发访问时,运行状况究竟是什么样?是排队等待?仍是并发的?

曾经有个错误的认识,一直觉得静态方法在多用户并发下会是排队等待,一个个执行,前些日子与朋友 单程列车 http://www.cnblogs.com/zhaojingjing/  一块儿作了测试后才发现,原来是并发执行的,绝对不会排队等待。并发

  写程序的不能怕丢人有错就改,积极改正错误,一天比一天上一个台阶就好。ide


模拟并发的测试代码以下,但愿对有须要的朋友提供的方便的参考测试

复制代码
// --------------------------------------------------------------------
// All Rights Reserved , Copyright (C) 2011 , Hairihan TECH, Ltd.
// --------------------------------------------------------------------

namespace DotNet.Example
{
using DotNet.BaseManager;

public class StaticTest
   {
/// <summary>
/// 定义委托
/// </summary>
/// <param name="user"> 用户 </param>
delegate void MakeStaticDelegate( string user);

/// <summary>
/// 这里是测试静态方法
/// </summary>
/// <param name="user"> 用户 </param>
private static void MakeStaticTest( string user)
       {
for ( int i = 0 ; i < 10 ; i ++ )
           {
// 输出当前的变量
               System.Console.WriteLine(user + " " + i.ToString());
               System.Threading.Thread.Sleep(
1000 );
           }
       }

/// <summary>
/// 这里是模拟多用户同时点击并发
/// </summary>
public void DoTest()
       {
// 模拟3个用户的并发操做
           MakeStaticDelegate makeStaticDelegate1 = new MakeStaticDelegate(MakeStaticTest);
           makeStaticDelegate1.BeginInvoke(
" user1 " , null , null );
           MakeStaticDelegate makeStaticDelegate2
= new MakeStaticDelegate(MakeStaticTest);
           makeStaticDelegate2.BeginInvoke(
" user2 " , null , null );
           MakeStaticDelegate makeStaticDelegate3
= new MakeStaticDelegate(MakeStaticTest);
           makeStaticDelegate3.BeginInvoke(
" user3 " , null , null );
           System.Console.ReadLine();
       }
   }
复制代码

}
spa

相关文章
相关标签/搜索