线程、线程池、并发、同步、异步、锁-创新互联

先看一个模拟多个线程同时写1000条日志例子:

达坂城ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

class Program {

  static void Main(string[] args) {

  Thread t1 = new Thread(Working);

  t1.Name = "Thread1";// 实例化三个写日志的线程。

  Thread t2 = new Thread(Working);

  t2.Name = "Thread2";

  Thread t3 = new Thread(Working);

  t3.Name = "Thread3";

  // 依次启动3个线程。

  t1.Start();

  t2.Start();

  t3.Start();

  Console.ReadKey();

  }

  // 每个线程都同时在工作

  static void Working() {

  // 模拟1000次写日志操作

  for (int i = 0; i < 1000; i++) {

  Logger.Write(Thread.CurrentThread.Name + " writes a log: " + i + ", on " + DateTime.Now.ToString() + ".\n");

  }// 做一些其它的事件

  for (int i = 0; i < 1000; i++) { }

  }

}

并发: 

多个用户争夺同一个资源(这个资源可以是服务器上的日志,可以是执行某一此sql操作,可以使ftp服务器上的某个文件等,又或者是程序中的某一个全局变量,因此我们可以称这种资源为:全局资源); 

解释: 

并发是在多个用户请求同一个资源的时候,或者是程序本身多线程请求同一个资源的时候造成的。 

比如: 

一个财务系统,两个人同时对总钱数进行操作,一个加10块一个减100块,注意这两个操作是同时进行的,那系统就不知道是加还是减了,这是并发问题。或者,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线程的处理的数据,而B线程又修改了A线程处理的数理(线程安全)。

异步: 

A线程要请求某个资源,但是此资源正在被B线程使用中,因为没有同步机制存在,A线程 

仍然请求的到这个资源,A线程无需等待。 

同步: 

A线程要请求某个资源,但是此资源正在被B线程使用中,因为同步机制存在,A线程请求 

不到,怎么办,A线程只能等待下去。

同步与异步: 

显然,同步最安全,最保险的。而异步不安全,容易导致死锁,这样一个线程死掉就会导致整个 

进程崩溃,但没有同步机制的存在,性能会有所提升。所以对于同步与异步必须有所取舍。

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。

新闻名称:线程、线程池、并发、同步、异步、锁-创新互联
标题网址:https://www.cdcxhl.com/article44/dojiee.html

成都网站建设公司_创新互联,为您提供网站制作动态网站移动网站建设手机网站建设静态网站虚拟主机

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网页设计公司