C#异步和线程

来源:互联网 发布:标准文摘数据库 编辑:程序博客网 时间:2024/06/01 14:04

有几天没写博客了,挺忙的,没多少时间写!!最近在做一个App,对于菜鸟来说,那真是到处是坑!!!!

 

 

今天来看看线程和异步的问题:

1、 什么是线程和异步?

2、 线程和异步的区别?

3、 关于线程的点东西?

4、 关于异步的点东西?

 

 

分割线、分割线、分割线…………………………………………………………………………

 

第一个问题:

什么是线程和异步?

异步:异步是一个计算机硬件的功能,熟悉电脑硬件的朋友肯定对DMA这个词比较熟悉,硬盘、光驱技术规格中都有明确DMA的模式指标,其实网卡、声卡、显卡也是有DMA功能的,DMA就是直接内存访问的意思,也就是说,拥有DMA功能的硬件在和内存进行数据交换的时候可以不消耗CPU资源。只要CPU在发起数据传输时发送一个指令,硬件就开始自己和内存交换数据,在传输完成之后硬件会触发一个中断来通知操作完成(回调函数)。这些无需消耗CPU时间的I/O操作正是异步操作的硬件基础,所以即使在DOS这样的单线程系统中也同样发起异步的DMA操作。

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

 

第二个问题

线程和异步的区别?

异步操作无需额外的线程负担,并且使用回调的方式进行处理,在设计良好的情况下,处理函数可以不必使用共享变量,减少了死锁的可能,异步操作复杂性相当高,程序主要使用回调方式进行处理,与普通人思维方式有些出入,而且难以调试。

多线程的优点很明显,线程中的处理程序依然是顺序执行,符合普通人的思维习惯,所以编程简单。但是多线程的使用,滥用,会给系统带来上下文切换的额外负担,并且线程间变量共享可能造成死锁的出现。

 

 

第三个问题:

关于线程的点东西?

Thread类,创建并控制线程,设置其优先级并获取其状态。线程的挂起、恢复和终止

http://msdn.microsoft.com/zh-cn/library/system.threading.thread(v=vs.110).aspx

 

第四个问题:

关于异步的点东西?

异步调用就是你 喊你朋友吃饭 ,你朋友说知道了 ,待会忙完去找你 ,你就去做别的了。

同步调用就是你 喊你朋友吃饭 ,你朋友在忙 ,你就一直在那等,等你朋友忙完了,你们一起去。

 

 

注意:

所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去

 

【参考】http://kb.cnblogs.com/page/116095/

 

0 0