理想中的情况是,语言只需要定义一个个任务,指定依赖顺序和共享数据,不需要指定调度细节,语言运行时和操作系统就能自动生成任务调度的方案,让一个个任务按照依赖关系和数据依赖,以最优的顺序执行。但是,现在大部分情况下任务的调度,任务如何在线程中执行,都是由程序员手工编码好的。在并发编程中的自动化,可以参考petri网理论或者Funtional的约束来实现,不过现在看,想要在工业界流行起来还比较遥远。Erlang和Go语言已经开始做了类似抽象和自动并发调度,Rust语言也在编译期对并发的易错点进行了形式化验证。