.NET多线程编程(10)——多线程的基础概念
2009-09-18 23:34
176 查看
什么是进程?
当个开始运行时它就是个进程进程包括运行中和所使用到内存和系统资源
而个进程又是由多个线程所组成
什么是线程?
线程是中个执行流每个线程都有自己专有寄存器(栈指针、计数器等)但代码区是共享即区别线程可以执行同样
什么是多线程?
多线程是指中包含多个执行流即在个中可以同时运行多个区别线程来执行区别任务也就是说允许单个创建多个并行执行线程来完成各自任务
多线程好处:
可以提高CPU利用率在多线程中个线程必须等待时候CPU可以运行其它线程而不是等待这样就大大提高了效率
多线程不利方面:
线程也是所以线程需要占用内存线程越多占用内存也越多;
多线程需要协调和管理所以需要CPU时间跟踪线程;
线程的间对共享资源访问会相互影响必须解决竞用共享资源问题;
线程太多会导致控制太复杂最终可能造成很多Bug;
接下来将对C#编程中多线程机制进行探讨为了省去创建GUI那些繁琐步骤更清晰地逼近线程本质接下来所有都是控制台最后Console.ReadLine是为了使中途停下来以便看清楚执行过程中输出
任何在执行时至少有个主线程
直观印象线程举例:
//Thread.cs
using;
using.Threading;
ThreadTest
{
RunIt
{
[STAThread]
voidMain(args)
{
Thread.CurrentThread.Name="Thread";//给当前线程起名为"Thread"
Console.WriteLine(Thread.CurrentThread.Name+"'Status:"+Thread.CurrentThread.ThreadState);
Console.ReadLine;
}
}
}
输出如下:
Thread's Status:Running
在这里我们通过Thread类静态属性CurrentThread获取了当前执行线程对其Name属性赋值“Thread”最后还输出了它当前状态(ThreadState)
所谓静态属性就是这个类所有对象所公有属性不管你创建了多少个这个类例子但是类静态属性在内存中只有个很容易理解CurrentThread为什么是静态——虽然有多个线程同时存在但是在某个时刻CPU只能执行其中
在头部我们使用了如下命名空间:
using ;
using .Threading;
在.net framework library中所有和多线程机制应用相关类都是放在.Threading命名空间中如果你想在你应用中使用多线程就必须包含这个类
我们通过其中提供Thread类来创建和控制线程ThreadPool类用于管理线程池等
(此外还提供解决了线程执行安排死锁线程间通讯等实际问题机制)
Thread类有几个至关重要思路方法描述如下:
Start:启动线程;
Sleep():静态思路方法暂停当前线程指定毫秒数;
Abort:通常使用该思路方法来终止个线程;
Suspend:该思路方法并不终止未完成线程它仅仅挂起线程以后还可恢复;
Resume:恢复被Suspend思路方法挂起线程执行;
当个开始运行时它就是个进程进程包括运行中和所使用到内存和系统资源
而个进程又是由多个线程所组成
什么是线程?
线程是中个执行流每个线程都有自己专有寄存器(栈指针、计数器等)但代码区是共享即区别线程可以执行同样
什么是多线程?
多线程是指中包含多个执行流即在个中可以同时运行多个区别线程来执行区别任务也就是说允许单个创建多个并行执行线程来完成各自任务
多线程好处:
可以提高CPU利用率在多线程中个线程必须等待时候CPU可以运行其它线程而不是等待这样就大大提高了效率
多线程不利方面:
线程也是所以线程需要占用内存线程越多占用内存也越多;
多线程需要协调和管理所以需要CPU时间跟踪线程;
线程的间对共享资源访问会相互影响必须解决竞用共享资源问题;
线程太多会导致控制太复杂最终可能造成很多Bug;
接下来将对C#编程中多线程机制进行探讨为了省去创建GUI那些繁琐步骤更清晰地逼近线程本质接下来所有都是控制台最后Console.ReadLine是为了使中途停下来以便看清楚执行过程中输出
任何在执行时至少有个主线程
直观印象线程举例:
//Thread.cs
using;
using.Threading;
ThreadTest
{
RunIt
{
[STAThread]
voidMain(args)
{
Thread.CurrentThread.Name="Thread";//给当前线程起名为"Thread"
Console.WriteLine(Thread.CurrentThread.Name+"'Status:"+Thread.CurrentThread.ThreadState);
Console.ReadLine;
}
}
}
输出如下:
Thread's Status:Running
在这里我们通过Thread类静态属性CurrentThread获取了当前执行线程对其Name属性赋值“Thread”最后还输出了它当前状态(ThreadState)
所谓静态属性就是这个类所有对象所公有属性不管你创建了多少个这个类例子但是类静态属性在内存中只有个很容易理解CurrentThread为什么是静态——虽然有多个线程同时存在但是在某个时刻CPU只能执行其中
在头部我们使用了如下命名空间:
using ;
using .Threading;
在.net framework library中所有和多线程机制应用相关类都是放在.Threading命名空间中如果你想在你应用中使用多线程就必须包含这个类
我们通过其中提供Thread类来创建和控制线程ThreadPool类用于管理线程池等
(此外还提供解决了线程执行安排死锁线程间通讯等实际问题机制)
Thread类有几个至关重要思路方法描述如下:
Start:启动线程;
Sleep():静态思路方法暂停当前线程指定毫秒数;
Abort:通常使用该思路方法来终止个线程;
Suspend:该思路方法并不终止未完成线程它仅仅挂起线程以后还可恢复;
Resume:恢复被Suspend思路方法挂起线程执行;
相关文章推荐
- 【慕课笔记】1-2 多线程背景知识介绍-多线程基础概念介绍
- 多线程基础-基本概念(一)
- 杰神之Java多线程基础概念和实现多线程
- Linux多线程基础学习(一)基本概念
- Linux程序设计学习笔记----多线程编程基础概念与基本操作
- 黑马程序员--JAVA基础复习之多线程(一)概念与创建方法
- 黑马程序员—10—java基础:有关多线程安全的学习笔记和学习心得体会
- java多线程系列—基础概念
- Python基础概念_10_异常处理
- Java 多线程(一) 基础知识与概念
- 【基础算法】(10)图的概念及相关算法
- [Win32基础]多线程相关概念
- 黑马程序员_java基础学习笔记10_多线程
- java多线程系列(一)基础概念
- Java 多线程(一) 基础知识与概念
- java多线程基础概念
- 再学java基础(10) 线程概念&操作
- 多线程之基础篇01:进程与线程的基本概念
- JAVA基础之多线程--概念