为什么[C]在当前市场中的需求如此旺盛?

2026-04-29 04:372阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计543个文字,预计阅读时间需要3分钟。

为什么[C]在当前市场中的需求如此旺盛?

原创新意是近年来文化创作中备受推崇的理念,它强调在继承传统的基础上,结合时代特色和个体创造力,产生新的思想、艺术或技术成果。以下是对这一概念的简要

创新思维,即在传承与发展的过程中,注入新元素,激发新活力,创造出独特而富有时代感的作品或技术。

[C#.NET][Thread] 小心使用线程的锁定对象


假设我对一个耗时的工作使用了ThreadPool,当我实例化多个执行个体时,不同的执行个体都要能各自工作。

public class DemoClass { private static object s_lock = new object(); private ulong m_value = 0; public void DoWork(string name) { ThreadPool.QueueUserWorkItem(o => { lock (s_lock) { for (ulong i = 0; i < 1000000; i++) { m_value = i; Console.WriteLine(string.Format("{0} method value = {1}", name, m_value)); Thread.Sleep(1000); } } }); } }

实例化类

internal class Program { private static void Main(string[] args) { DemoClass c1 = new DemoClass(); DemoClass c2 = new DemoClass(); c1.DoWork("NO.1"); Thread.Sleep(1000); c2.DoWork("NO.2"); Console.ReadKey(); } }

上段程序的执行结果如下:

使用静态变量锁定的结果,让不同的执行个体都参考了同一个锁定对象,这带来了一个问题,每当程序员使用这个类,调用非静态方法时,都会遇到这个锁,都会同步,这就失去了我们的目的

  • 要完成非静态方法在多线程下,能在不同的执行个体能各自工作,只要将 s_lock 的 static 拿掉就好了。
  • 静态方法要确保线程安全,则用静态的对象来锁定,若DoWork是静态方法,s_lock 就不需要改变。

将 s_lock 的 static 拿掉的执行结果

若有谬误,烦请告知,新手发帖请多包涵

2010~2017 C# 第四季

原文:大专栏 [C#.NET][Thread] 小心使用线程的锁定对象

为什么[C]在当前市场中的需求如此旺盛?
标签:锁定对象

本文共计543个文字,预计阅读时间需要3分钟。

为什么[C]在当前市场中的需求如此旺盛?

原创新意是近年来文化创作中备受推崇的理念,它强调在继承传统的基础上,结合时代特色和个体创造力,产生新的思想、艺术或技术成果。以下是对这一概念的简要

创新思维,即在传承与发展的过程中,注入新元素,激发新活力,创造出独特而富有时代感的作品或技术。

[C#.NET][Thread] 小心使用线程的锁定对象


假设我对一个耗时的工作使用了ThreadPool,当我实例化多个执行个体时,不同的执行个体都要能各自工作。

public class DemoClass { private static object s_lock = new object(); private ulong m_value = 0; public void DoWork(string name) { ThreadPool.QueueUserWorkItem(o => { lock (s_lock) { for (ulong i = 0; i < 1000000; i++) { m_value = i; Console.WriteLine(string.Format("{0} method value = {1}", name, m_value)); Thread.Sleep(1000); } } }); } }

实例化类

internal class Program { private static void Main(string[] args) { DemoClass c1 = new DemoClass(); DemoClass c2 = new DemoClass(); c1.DoWork("NO.1"); Thread.Sleep(1000); c2.DoWork("NO.2"); Console.ReadKey(); } }

上段程序的执行结果如下:

使用静态变量锁定的结果,让不同的执行个体都参考了同一个锁定对象,这带来了一个问题,每当程序员使用这个类,调用非静态方法时,都会遇到这个锁,都会同步,这就失去了我们的目的

  • 要完成非静态方法在多线程下,能在不同的执行个体能各自工作,只要将 s_lock 的 static 拿掉就好了。
  • 静态方法要确保线程安全,则用静态的对象来锁定,若DoWork是静态方法,s_lock 就不需要改变。

将 s_lock 的 static 拿掉的执行结果

若有谬误,烦请告知,新手发帖请多包涵

2010~2017 C# 第四季

原文:大专栏 [C#.NET][Thread] 小心使用线程的锁定对象

为什么[C]在当前市场中的需求如此旺盛?
标签:锁定对象