ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#多线程理解

2021-08-04 16:04:18  阅读:125  来源: 互联网

标签:C# System 理解 线程 进程 using 多线程 CPU


进程(Process): 是系统中的一个基本概念。 一个正在运行的应用程序在操作系统中被视为一个进程,包含着一个运行程序所需要的资源,进程可以包括一个或多个线程 。进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非利用分布式计算方式),一个进程运行的失败也不会影响其他进程的运行,Windows系统就是利用进程把工作划分为多个独立的区域的。进程可以理解为一个程序的基本边界。

线程(Thread):  是 进程中的基本执行单元,是操作系统分配CPU时间的基本单位 ,在进程入口执行的第一个线程被视为这个进程的 主线程 。

 

多线程能实现的基础:

  1、CPU运行速度太快,硬件处理速度跟不上,所以操作系统进行分时间片管理。这样,宏观角度来说是多线程并发 ,看起来是同一时刻执行了不同的操作。但是从微观角度来讲,同一时刻只能有一个线程在处理。

  2、目前电脑都是多核多CPU的,一个CPU在同一时刻只能运行一个线程,但是 多个CPU在同一时刻就可以运行多个线程 。

多线程的优点:

  可以同时完成多个任务;可以让占用大量处理时间的任务或当前没有进行处理的任务定期将处理时间让给别的任务;可以随时停止任务;可以设置每个任务的优先级以优化程序性能。

多线程的缺点:

  1、 内存占用  线程也是程序,所以线程需要占用内存,线程越多,占用内存也越多(每个线程都需要开辟堆栈空间,多线程时有时需要切换时间片)。

  2、 管理协调 多线程需要协调和管理,所以需要占用CPU时间以便跟踪线程,线程太多会导致控制太复杂。

  3、 资源共享   线程之间对共享资源的访问会相互影响,必须解决争用共享资源的问题。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace TaskDemo
{
class Program
{
static void Main(string[] args)
{
//无参调用实例方法
ThreadTest test = new ThreadTest();
Thread thread = new Thread(test.Func2);
thread.Start();
//有参调用实例方法
ThreadTest1 test1 = new ThreadTest1();
Thread thread1 = new Thread(new ParameterizedThreadStart(test1.Func1));
thread1.Start("有参实例方法");
Console.ReadKey();


}

class ThreadTest
{
public void Func2()
{
Console.WriteLine("无参实例方法");
}
}
class ThreadTest1
{
public void Func1(object test)
{
Console.WriteLine(test);
}
}
}
}

 

来源:C#多线程和异步(一)——基本概念和使用方法 - 捞月亮的猴子 - 博客园 (cnblogs.com)

标签:C#,System,理解,线程,进程,using,多线程,CPU
来源: https://www.cnblogs.com/yzsh0809wc/p/15099278.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有