
正如您已经注意到的,研讨会的形式已经演变并采用了新的形式:随后的每个研讨会现在都完全专注于某个主题。 第五个专门讨论了“垃圾收集器”主题,并在10小时内揭示了所有可能的情况,从而将绝对私人的问题抛在了后面。 它的高潮是关于实际应用的报告(一个让每个人都感兴趣的问题-“为什么知道这一切?”)
我想每个人都想知道的第二个问题,但通常来说,没有时间了,这是使用多线程代码以及规划和支持其体系结构的问题。 这些问题是非常复杂,令人恐惧的,并且通常令人反感。 这就是为什么普通开发人员不会超出最简单的同步结构的原因。 但是周围有很多有趣的事情 :)
不久之前,我了解了一个看似简单的事实:为了了解任何顶级抽象的工作原理,您需要了解底层抽象的工作原理。 换句话说,要了解如何在异步/等待级别使用多线程代码,您至少需要了解.NET中的多线程代码的同步原语和其他基础知识。 更好的是-相对于操作系统而言,这是相当多的。 之后,大多数顶级抽象将自动变得清晰。
- 11月30日 在圣彼得堡 ,从09:00到20:00
- 12月7日 ,莫斯科 ,从09:00到20:00
在这次新研讨会上,这次研讨会不仅涉及以前的.NET平台,而且基本上涵盖了任何平台(毕竟,多线程代码在较低级别的抽象基础上工作),我们将最详细地揭示此主题:
车间计划
基础知识
首先,我们将考虑基础:一切都可以追溯到操作系统和处理器。 毕竟,任何高层机制都根据下层规则进行工作。 这将包括处理器体系结构,同步原语以及Windows和Linux操作系统API的基础。 您知道仅存在几种过程吗?
BCL,调度程序,线程本地,STA / MTA ...
在检查了这些抽象并检查了使用它们的规则之后,我们将重点介绍平台本身的基本抽象:BCL,线程本地,线程池和其他基础。 这些抽象无处不在,但示例将用于.NET平台。 我们将看到与操作系统的关系,它们的性能以及在各种情况下的适用性。 最后,我们将了解许多尚未解决的问题:同步上下文,STA / MTA,线程局部语言如何工作等等。
有了每个新的抽象,再加上所有内容将被并排告知这一事实:在一天之内,您将开始将所有知识相互关联,我们将平稳地切换到更高级别的各种机制:调度程序,后台,多线程代码开发模型。
无锁算法
一路异步/等待。 最后,我们将介绍更高级的多线程算法。 我们将分析一对无锁算法,以便每个人都可以自己创建它们。 之后,我们将学习为自己的发展提出要求。
PLINQ /异步等待
此外,在吸收了基础知识之后,我们将开始研究高抽象级别的库:从PLINQ到异步/等待,分析使用它们的功能。 在这里,我的意思是您对库本身非常熟悉,我们将在更严格的级别上对它们进行深入研究。
当然,我们将无法在一天内揭露并发性的话题:这个话题过于广泛和多面。 出于这个原因,CLRium#6将持续两天。
联络资料