权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

C#静态方法在多用户并发访问时,运行情况到底是什么样?是排队等待?还是并发的?

2011-03-01 17:31  通用C#系统架构  阅读(14355)  评论(98编辑  收藏  举报

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

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

 

模拟并发的测试代码如下,希望对有需要的朋友提供的方便的参考

//--------------------------------------------------------------------
// 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"nullnull);
            MakeStaticDelegate makeStaticDelegate2 
= new MakeStaticDelegate(MakeStaticTest);
            makeStaticDelegate2.BeginInvoke(
"user2"nullnull);
            MakeStaticDelegate makeStaticDelegate3 
= new MakeStaticDelegate(MakeStaticTest);
            makeStaticDelegate3.BeginInvoke(
"user3"nullnull);
            System.Console.ReadLine();
        }
    }

} 

 

 



C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友