如何识别擅长多线程编程的程序员?

Eve*_*one 7 language-agnostic multithreading

如果团队被分配了涉及大量多线程编码的任务,团队是否应该有任何先决条件?

你会找什么?

gbj*_*anb 11

让团队到咖啡厅喝杯,确保只有1汤匙可用.

额外奖励:在其他人放入糖之前搅拌咖啡的人,就输了.


(严肃地说,问问他们,看看谁知道两个线程之间有共享对象的对象成员,以及其他共享资源.请问他们如何防止这种情况,然后问他们如何让你的MT应用程序执行而不会在任何地方放锁.问他们关于死锁.如果他们不知道答案,他们就没有足够的经验,或者需要阅读这个主题并在代码开始后对代码进行良好的设计评审.


Mar*_*ell 2

线程通常非常复杂且特定于实现,因此我认为评估这一点的唯一有效方法是为它们设置一个模拟任务(在所需的架构中)并“进行它”。涉及竞争的读者/作者/工作者的东西 - 以及 UI(如果需要)。

当然...您还需要有资格的人来评估他们的努力...

你也可以谈论总体原则,但我不确定这是否涵盖了它。举个例子,就在昨天,C# 领域对涉及内存模型、语言规范和 clr 规范的一些微妙问题存在很多困惑。你不能用模糊的术语来评估这种细节;它必须非常具体地解决问题。

同样,每个框架的工具/方法也会发生变化。OCAML / F# 等具有与 Java/C#非常不同的线程代码 - 甚至每个版本都会发生变化(请参阅并行扩展/TPL 与 3.5 中的 ReaderWriterLockSlim 与 2.0 中的 ReaderWriterLock 等内容)