码迷,mamicode.com
首页 > 其他好文 > 详细

各类技术学习笔记

时间:2016-05-19 10:44:31      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

1、C#的执行是同步的

2、JavaScript的执行是异步的

3、C#多线程的使用需注意多线程的同步

4、有数据的存储就涉及到数据的检索(例如:C#集合(Collection);数据库)

5、同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行。委托的同步调用通过Invoke方法来实现(C#)

6、异步调用不阻塞线程,而是把调用塞到线程池中,程序主线程或UI线程可以继续执行。委托的异步调用通过BeginInvoke和EndInvoke来实现(C#)

7、委托(Delegate)特别用于实现事件和回调方法。就是叫别人帮你做事

8、.Net的公用语言运行时(Common Language Runtime,CLR)能区分两种不同类型的线程:前台线程和后台线程。这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后台线程在应用程序退出时都会自动结束。

9、C#获取应用进程的线程数

  1)打开任务管理器,查看---选择列----线程计数 勾起来后,就可以查看到每个程序的线程数了

  2)

using System.Diagnostics;
Process.GetCurrentProcess().Threads.Count;

  3)

int n = 0;
foreach (System.Diagnostics.ProcessThread th in System.Diagnostics.Process.GetCurrentProcess().Threads)
 {
  if (th.ThreadState == System.Diagnostics.ThreadState.Running)
  {
    n++;
  }
}

 10、C#中实现异步调用流程:

  1)、创建一个异步处理函数,并针对其定义一个委托;

  2)、在调用函数的时候,使用委托的BeginInvoke方法,指定在函数处理完成时的回调函数(如果不需要对完成事件做处理,可以给null值),并指定所需的参数(如果没有参数,也可以给null值);

  3)、在回调函数中处理完成事件。

  注:EndInvoke会使得调用线程阻塞,直到异步函数处理完成。显然,紧接在BeginInvoke后面的EndInvoke使用方式与同步调用等价。

 

  .NET处理异步函数调用,事实上是通过线程来完成的。这个过程有以下几个特点:

  • 异步函数由线程完成,这个线程是.NET线程池中的线程
  • 通常情况下,.NET线程池拥有500个线程(当然这个数量可以设置),每当调用BeginInvoke开始异步处理时,异步处理函数就由线程池中的某个线程负责执行,而用户无法控制具体是由哪个线程负责执行
  • 由于线程池中线程数量有限,因此当池中线程被完全占用时,新的调用请求将使函数不得不等待空余线程的出现。此时,程序的效率会有所影响

  学习博文《C#基础:异步调用

11、领域驱动设计(DDD)

 

http://www.cnblogs.com/daxnet

http://www.cnblogs.com/netfocus/

12、CQRS模式:命令查询职责分离模式

 

http://www.cnblogs.com/daxnet

http://www.cnblogs.com/netfocus/

......

各类技术学习笔记

标签:

原文地址:http://www.cnblogs.com/yuzhihui/p/5507685.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!