Logo
☆☆☆☆☆
0.0
Beginner
15h

C# 并发编程:高级工程师面试指南

C#中的并发是高级工程师面试中讨论最为复杂和深入的主题之一。掌握并发与多线程知识能让面试者具备显著优势。本课程奠定了高级并发与多线程的基础,深入讲解了监视器(Monitors)和延迟回调(Deferred Callbacks)等概念。同时,课程还构建了针对常见并发问题(如读者-写者问题和哲学家就餐问题)的简单且完整的解决方案,这些内容在面试中常被提及。虽然无需事先了解并发知识即可完成本课程,但熟悉C#基础知识将有助于更好地学习。

5 Lessons
Included in Subscription Plan
Personalized Learning
Powered by AI
C# 并发编程:高级工程师面试指南
C#中的并发是高级工程师面试中讨论最为复杂和深入的主题之一。掌握并发与多线程知识能让面试者具备显著优势。本课程奠定了高级并发与多线程的基础,深入讲解了监视器(Monitors)和延迟回调(Deferred Callbacks)等概念。同时,课程还构建了针对常见并发问题(如读者-写者问题和哲学家就餐问...

Content

5 Lessons • 0 Quizzes • 0 Challenges

基础
  1. 1

    简介

  2. 2

    程序、进程与线程

  3. 3

    并发与并行

  4. 4

    协作式多任务与抢占式多任务

  5. 5

    同步与异步

  6. 6

    I/O 密集型与 CPU 密集型

  7. 7

    吞吐量与延迟

  8. 8

    临界区与竞态条件

  9. 9

    死锁、活跃性与可重入锁

  10. 10

    互斥锁(Mutex)与信号量(Semaphore)都是用于多线程编程中控制对共享资源访问的同步机制,但它们在用途和行为上存在关键区别: **互斥锁(Mutex)** - 用于保护临界区,确保同一时间只有一个线程可以访问共享资源。 - 通常具有“所有权”概念:只有获取锁的线程才能释放它。 - 一般初始值为1,表示资源可用。 - 适用于需要独占访问的场景,如修改共享变量或写入文件。 **信号量(Semaphore)** - 是一种更通用的同步工具,用于控制对多个相同资源的访问。 - 可以设置一个计数值(如5),表示最多允许多少个线程同时访问资源。 - 不具备所有权:任何线程都可以通过P(等待)和V(释放)操作来改变信号量状态。 - 适用于资源池管理,如数据库连接池、线程池等。 **核心区别** - 互斥锁是二进制信号量的一种特例(计数为1),而信号量可以支持大于1的计数值。 - 互斥锁强调“独占”,信号量强调“数量限制”。 - 互斥锁通常用于保护单一资源,信号量用于协调多个资源的使用。 简而言之: - 使用互斥锁当你要确保只有一个线程能进入某个代码段。 - 使用信号量当你要允许多个线程同时访问,但不超过指定数量。

  11. 11

    互斥锁(Mutex)与监视器(Monitor)

  12. 12

    霍尔监视器与梅萨监视器

  13. 13

    信号量与监视器

  14. 14

    阿姆达尔定律

  15. 15

    摩尔定律

API 概述
  1. 1

    使用线程

  2. 2

    线程池与线程中止(concept)

  3. 3

    线程异常与闭包捕获(checkpoint)

  4. 4

    互斥锁

  5. 5

    信号量

  6. 6

    Interlocked

  7. 7

    等待句柄

  8. 8

    监控

  9. 9

    ... 继续

  10. 10

    lock 语句

  11. 11

    自旋锁与自旋等待

  12. 12

    屏障

  13. 13

    CountdownEvent

  14. 14

    ThreadLocal

  15. 15

    任务

  16. 16

    原子性

  17. 17

    内存模型

  18. 18

    重排序示例续篇(concept)

  19. 19

    获取-释放语义

  20. 20

    易变的

  21. 21

    重排序总结(summary)

异步编程简介
  1. 1

    简介

  2. 2

    异步/等待

  3. 3

    继续:返回值与 Task.WhenAll

  4. 4

    可等待的

  5. 5

    继续:Task.Run 与 TaskCompletionSource

  6. 6

    注意事项

  7. 7

    测验

面试练习题
  1. 1

    阻塞队列 | 有界缓冲区 | 生产者-消费者

  2. 2

    ... 继续

  3. 3

    ... 继续

  4. 4

    使用令牌桶算法进行限流

  5. 5

    线程安全的延迟回调

  6. 6

    实现信号量

  7. 7

    实现 AutoResetEvent

  8. 8

    读写锁

  9. 9

    男女共用卫生间问题

  10. 10

    实现一个屏障

  11. 11

    Uber 乘车问题

  12. 12

    哲学家就餐问题

  13. 13

    理发店

  14. 14

    超人问题

  15. 15

    多线程归并排序

  16. 16

    异步转同步问题

结束
  1. 1

    尾声

Certificate of Completion

Showcase your accomplishment by sharing your certificate of completion.

Course Author:Anonymous User

Reviews

Read reviews from students who have taken this course and share your own experience.

Reviews & Comments (0)