博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
各类技术学习笔记
阅读量:5119 次
发布时间:2019-06-13

本文共 2075 字,大约阅读时间需要 6 分钟。

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开始异步处理时,异步处理函数就由线程池中的某个线程负责执行,而用户无法控制具体是由哪个线程负责执行
  • 由于线程池中线程数量有限,因此当池中线程被完全占用时,新的调用请求将使函数不得不等待空余线程的出现。此时,程序的效率会有所影响

  学习博文《

11、领域驱动设计(DDD)

 

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

 

13、C#中异步调用和多线程的相同点和异同点

  相同点:异步调用和多线程两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。

  异同点:

  1)异步和多线程的区别之异步调用的本质

    所有的程序最终都会由计算机硬件来执行,所以为了更好的理解异步操作的本质,我们有必要了解一下它的硬件基础。 熟悉电脑硬件的朋友肯定对DMA这个词不陌生,硬盘、光驱的技术规格中都有明确DMA的模式指标,其实网卡、声卡、显卡也是有DMA功能的。DMA就是直接内存访问的意思,也就是说,拥有DMA功能的硬件在和内存进行数据交换的时候可以不消耗CPU资源。只要CPU在发起数据传输时发送一个指令,硬件就开始自己和内存交换数据,在传输完成之后硬件会触发一个中断来通知操作完成。这些无须消耗CPU时间的I/O操作正是异步操作的硬件基础。所以即使在DOS 这样的单进程(而且无线程概念)系统中也同样可以发起异步的DMA操作。

  2)异步和多线程的区别之线程的本质

    线程不是一个计算机硬件的功能,而是操作系统提供的一种逻辑功能,线程本质上是进程中一段并发运行的代码,所以线程需要操作系统投入CPU资源来运行和调度。

13、C#接口

  1)、从接口的定义方面来说,接口其实就是类和类之间的一种协定,一种约束。

  2)、从设计的角度来看:一个项目中用若干个类需要去编写,由于这些类比较复杂,工作量比较大,这样每个类就需要占用一个工作人员进行编写。比如A程序员去定Dog类,B程序员去写Cat类。这两个类本来没什么联系的,可是由于用户需要他们都实现一个关于”叫”的方法。这就要对他们进行一种约束。让他们都继承于IBark接口,目的是方便统一管理。另一个是方便调用。

......

转载于:https://www.cnblogs.com/yuzhihui/p/5507685.html

你可能感兴趣的文章
Android 获取网络链接类型
查看>>
linux中启动与终止lnmp的脚本
查看>>
gdb中信号的处理[转]
查看>>
LeetCode【709. 转换成小写字母】
查看>>
如何在Access2007中使用日期类型查询数据
查看>>
Jzoj4757 树上摩托
查看>>
CF992E Nastya and King-Shamans(线段树二分+思维)
查看>>
第一个Java Web程序
查看>>
树状数组_一维
查看>>
如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下:
查看>>
linux install ftp server
查看>>
嵌入式软件设计第8次实验报告
查看>>
算法和数据结构(三)
查看>>
Ubuntu下的eclipse安装subclipse遇到没有javahl的问题...(2天解决了)
查看>>
alter database databasename set single_user with rollback IMMEDIATE 不成功问题
查看>>
WCF揭秘——使用AJAX+WCF服务进行页面开发
查看>>
【题解】青蛙的约会
查看>>
IO流
查看>>
mybatis调用存储过程,获取返回的游标
查看>>
设计模式之装饰模式(结构型)
查看>>