了解 C# 多线程、并发、异步、同步、并行

多线程:指在一个程序中同时运行多个线程。线程是程序执行的最小单位,多线程可以让程序在同一时间执行多个任务,提高程序的响应性和效率。  

并发:是指多个任务在一段时间内同时发生,但不一定是真正的同时执行,可能是通过任务切换来实现看似同时进行。  

异步:异步操作意味着启动一个操作后,程序不需要等待该操作完成就可以继续执行其他任务,操作完成时会通过回调或事件通知程序结果。  

同步:同步操作则要求程序在执行一个操作时,必须等待该操作完成才能继续执行后续代码。  

并行:并行强调的是真正在同一时刻同时执行多个任务,通常需要多核 CPU 或多个物理处理器的支持。  

多线程:

using System; 
using System.Threading; 
 
class Program 
{ 
    static void Main() 
    { 
        Thread thread1 = new Thread(ThreadMethod1); 
        Thread thread2 = new Thread(ThreadMethod2); 
 
        thread1.Start(); 
        thread2.Start(); 
    } 
 
    static void ThreadMethod1() 
    { 
        Console.WriteLine("线程 1 正在执行"); 
    } 
 
    static void ThreadMethod2() 
    { 
        Console.WriteLine("线程 2 正在执行"); 
    } 
} 

并行:

using System; 
using System.Threading; 
 
class Program 
{ 
    static void Main() 
    { 
        Console.WriteLine("主线程开始"); 
 
        Thread thread1 = new Thread(ConcurrentMethod1); 
        Thread thread2 = new Thread(ConcurrentMethod2); 
 
        thread1.Start(); 
        thread2.Start(); 
 
        Console.WriteLine("主线程继续执行其他操作"); 
    } 
 
    static void ConcurrentMethod1() 
    { 
        Console.WriteLine("并发线程 1 执行"); 
    } 
 
    static void ConcurrentMethod2() 
    { 
        Console.WriteLine("并发线程 2 执行"); 
    } 
} 

异步:

using System; 
using System.Threading.Tasks; 
 
class Program 
{ 
    static async Task Main() 
    { 
        Console.WriteLine("主线程开始"); 
 
        await AsyncMethod(); 
 
        Console.WriteLine("主线程继续"); 
    } 
 
    static async Task AsyncMethod() 
    { 
        Console.WriteLine("异步方法开始"); 
        await Task.Delay(2000); 
        Console.WriteLine("异步方法结束"); 
    } 
} 

同步:

using System; 
 
class Program 
{ 
    static void Main() 
    { 
        Console.WriteLine("同步操作开始"); 
        SyncMethod(); 
        Console.WriteLine("同步操作结束"); 
    } 
 
    static void SyncMethod() 
    { 
        Console.WriteLine("正在执行同步方法"); 
    } 
} 
using System; 
using System.Threading.Tasks; 
 
class Program 
{ 
    static void Main() 
    { 
        Parallel.Invoke( 
            () => ParallelMethod1(), 
            () => ParallelMethod2() 
        ); 
    } 
 
    static void ParallelMethod1() 
    { 
        Console.WriteLine("并行方法 1 执行"); 
    } 
 
    static void ParallelMethod2() 
    { 
        Console.WriteLine("并行方法 2 执行"); 
    } 
} 
声明 本站所有文章,如无特殊说明或标注,均为本站原创发布
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站
本站上的资源来源于互联网,仅供网友学习交流,若您需要装载,请 附上原文链接
无意侵害您的权益,请发送邮件至 admin@7b2.dev 或点击右侧 私信:糖茶砌站 反馈,我们将尽快处理
CSharp

C# 阻止应用程序多开

2024-8-20 9:17:56

CSharpWPF

WPF 登陆界面与Mysql

2024-8-24 5:30:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索