---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
多线程
一、为什么要用多线程
1、 让计算机“同时”做多件事情,节约时间。
2、 后台运行程序,提高程序的运行效率,也不会使主页面出现无响应的情况。
3、 多线程可以让一个程序“同时”处理多个事情。
4、 计算机cpu大部分时间处于空闲状态,浪费了cpu资源。
进程与线程:
多线程之间的关系:
线程是程序中的一个执行流,每个线程都有自己得专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行相同的函数。
多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务(代码),也就是说允许单个线程创建多个并行执行的线程来完成各自的任务。
.NET中如何实现多线程1
1、 线程肯定也要执行一段代码的。所以要产生一个线程,必须先为该线程写一个方法,这个方法中的代码就是该线程运行所要执行的代码。(找人来做一件事件,必须先确定要做的事情。)
2、 线程启动时,通过委托调用该方法。
(委托的好处)
(线程启动时,调用传过来的委托,委托就会执行相应的方法,实现线程执行方法。)
产生一个线程的4个步骤:
1、 编写产生线程所要执行的方法。
2、 引用System.Threading命名空间。
3、 实例化Thread类,并传入一个指向线程所要运行方法的委托。(这时候这个线程已经产生,但是还没有运行。)
4、 调用Thread实例的Start方法,标记该线程可以被CPU执行了,但具体执行时间有CPU决定。
前台线程和后台线程:
前台线程:只有所有的前台线程都关闭才能完成程序关闭。(线程默认是前台线程)
后台线程:只要所有的前台线程结束,后台线程自动结束。
//将线程设置为后台线程。
threadFirst.IsBackground = true;
Thread 类的一些重要成员
Start()启动线程
Abort()终止线程
Thread.Sleep(1)静态方法,可以使当前线程停止一段时间运行。
Name线程名
Thread.CurrentThread获得当前的线程引用。
线程方法重入问题
视频:12---04、05
第13课
网络编程socket
Socket相关概念
a、 socket的英文原意是“孔”或“插座”。作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两个程序通信用的)
b、 socket非常类似于电话插座。以一个电话网为例。电话的通话双方相当于相互通信的2个程序,电话号码就是IP地址。任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket;同时要知道对方拨号呼叫,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求。对方假如在场并空闲,拿起电话话筒,双发就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后,一方挂起电话机相当于关闭socket,撤销连接。
c、 在internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个socket,并绑定到一个端口上,不同的端口对应于不同的服务(应用程序)。
例如:http使用80端口 ftp使用21端口 smtp 使用23端口
d、 有两种类型:
流式Socket(STREAM):
是一种面向连接的Socket,针对于面向连接的TCP服务应用,安全,但是效率低。
数据报式Socket(DATAGRAM):
是一种无连接的Socket,对应于无连接的UDP服务应用。不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但效率高。
Socket一般应用模式:
Socket通信基本流程:
Socket的通讯过程:
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net