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/
- C#异步和线程
- c#多线程:线程池和异步编程
- c#多线程:线程池和异步编程
- c#多线程:线程池和异步编程
- C#异步调用和线程的同步
- C#线程通信和异步委托
- C#线程通信和异步委托
- C# 线程与异步
- C#线程 异步调用
- C# 线程,异步,协程
- C#异步跨线程
- C# 异步与线程
- c#多线程教学(4):线程池和异步编程
- c#多线程教学(4):线程池和异步编程
- c#多线程教学(4):线程池和异步编程
- c#多线程教学(4):线程池和异步编程
- c#多线程教学(4):线程池和异步编程
- c#多线程教学(4):线程池和异步编程
- .net 实现URL重写
- 【Leetcode长征系列】Longest Common Prefix
- android 创建桌面快捷方式,4.0系统可用
- 怎样使用OpenCV进行人脸识别
- POJ 1637 混合欧拉回路
- C#异步和线程
- Redis应用场景
- 栈的基本操作实现-c/c++
- 改善java代码的建议
- mule studio学习笔记(五):JDBC结果处理
- [Leetcode] Combinations
- 常用操作
- ext GridPanel分页
- 【ZOJ】2112 Dynamic Rankings 动态第K大【线段树套treap】