对于单线程应用程序,我喜欢使用类图来概述该应用程序的体系结构。但是,在尝试了解大量的多线程/并发应用程序时,这种类型的图并不是很有用,例如,因为类的不同实例在不同的线程上“处于活动状态”(意味着访问一个实例仅从一个实例中保存)线程继续存在)。因此,类之间的关联并不一定意味着我可以在那些对象上调用方法,而是必须在目标对象的线程上进行该调用。
我在该主题上挖掘过的大多数文献 ,例如Hassan Gomaa的UML设计并发,分布式和实时应用程序,都有一些不错的主意,例如将线程边界绘制到对象图中,但总体而言似乎有点学术性和冗长性真的很有用。
我不想将这些图用作问题域的高级视图,而只是作为我的类/对象,它们之间的相互作用以及我上面提到的线程边界所造成的限制的详细描述。
因此,我想知道:
- 您发现哪种类型的图对理解多线程应用程序最有帮助?
- 对经典UML的扩展是否考虑了多线程应用程序的特殊性,例如通过说明
- 有些对象可能生活在某个线程中,而另一些对象则没有线程亲和性;
- 对象的某些字段可以从任何线程读取,但只能从一个线程写入。
- 有些方法是同步的并返回结果,而另一些方法则是异步的,这些方法使请求排队,并例如通过不同线程上的回调返回结果。