小编Cod*_*der的帖子

C#中的线程死锁示例

有人能给出一个如何在C#语言中引起线程死锁的例子吗?

c# deadlock

25
推荐指数
2
解决办法
2万
查看次数

为什么锁比Monitor.TryEnter慢得多?

结果

锁定:85.3微秒

Monitor.TryEnter:11.0微秒

锁是否扩展为相同的代码?

编辑:1000次迭代的结果:锁定:103.3微秒Monitor.TryEnter:20.2微秒

代码如下.谢谢

    [Test]
    public void Lock_Performance_Test()
    {
        const int lockIterations = 100;

        Stopwatch csLock = Stopwatch.StartNew();
        for (int i = 0; i < lockIterations; )
        {
            lock (object1)
            {
                i++;
            }
        }
        csLock.Stop();

        Stopwatch csMonitor = Stopwatch.StartNew();
        for (int i = 0; i < lockIterations; )
        {
            if (Monitor.TryEnter(object1, TimeSpan.FromSeconds(10)))
            {
                try
                {
                    i++;
                }
                finally
                {
                    Monitor.Exit(object1);
                }
            }
        }
        csMonitor.Stop();

        Console.WriteLine("Lock: {0:f1} microseconds", csLock.Elapsed.Ticks / 10M);
        Console.WriteLine("Monitor.TryEnter: {0:f1} microseconds", csMonitor.Elapsed.Ticks / 10M);;
    }
Run Code Online (Sandbox Code Playgroud)

c#

21
推荐指数
2
解决办法
2万
查看次数

c#字符串实习

我试图理解字符串实习,为什么在我的例子中似乎不起作用.示例的要点是显示示例1使用较少(内存较少),因为它在内存中应该只有10个字符串.但是,在下面的代码中,两个示例都使用大致相同的内存量(虚拟大小和工作集).

请告知为什么示例1没有使用更少的内存?谢谢

例1:

        IList<string> list = new List<string>(10000);

        for (int i = 0; i < 10000; i++)
        {
            for (int k = 0; k < 10; k++)
            {
                list.Add(string.Intern(k.ToString()));
            }

        }

        Console.WriteLine("intern Done");
        Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

例2:

        IList<string> list = new List<string>(10000);

        for (int i = 0; i < 10000; i++)
        {
            for (int k = 0; k < 10; k++)
            {
                list.Add(k.ToString());
            }

        }

        Console.WriteLine("intern Done");
        Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

c# string-interning

11
推荐指数
3
解决办法
4030
查看次数

AppDomains是否在自己的线程中执行?

如果我运行此代码,是否每个都AppDomain在不同的线程中执行?

 ThreadPool.QueueUserWorkItem(delegate
 {
     /// Create AppDomain and run code
 });
Run Code Online (Sandbox Code Playgroud)

c# multithreading appdomain

8
推荐指数
1
解决办法
4485
查看次数

为什么接口上的Dictionary <k,v>是一个坏主意?

为什么Dictionary<k,v>界面上的主意不好?

谢谢

c#

5
推荐指数
1
解决办法
308
查看次数

如何在不释放锁的情况下退出锁定语句?

我有一个奇怪的问题,一个死锁问题,如果我使用Visual Studio暂停程序并检查线程,我只能看到两个线程在等待锁.没有线程出现在锁定范围内!Visual Studio只是说谎或者如何在不释放锁的情况下退出锁定语句?

谢谢

c#

4
推荐指数
1
解决办法
307
查看次数

string interning - 这段代码应该只在内存中创建10个字符串吗?

似乎创造了更多.请在这里建议为什么或如何正确实习.

谢谢

        IList<string> list = new List<string>(10000);

        for (int i = 0; i < 10000; i++)
        {
            for (int k = 0; k < 10; k++)
            {
                list.Add(string.Intern(k.ToString()));
            }
        }

        Console.WriteLine("intern Done");
        Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

c#

1
推荐指数
1
解决办法
331
查看次数