如何编写golang多重相互作用粒子系统?

如何编写golang多重相互作用粒子系统?,go,concurrency,particles,Go,Concurrency,Particles,我希望有一个对象集合,每个对象都依赖于其他对象的全部或部分。 我计划有两个并发组,在第一个并发组中, 每个对象计算所有其他对象的半径, 然后检索彼此的电荷,计算力并存储力。 在第二个并发组中,每个对象按照力的比例移动其(x,y,z)。 因此,通过在并发组之间来回切换, 对象在没有竞争条件的情况下移动。 我希望系统持续运行,直到收到键盘退出请求。 我做了大量的搜索,但没有找到立足点。 请推荐一个链接,或者展示一个查询独立他人的简单示例。 我很感激我能提供MWE,但我是一个绝对的golang初学者

我希望有一个对象集合,每个对象都依赖于其他对象的全部或部分。 我计划有两个并发组,在第一个并发组中, 每个对象计算所有其他对象的半径, 然后检索彼此的电荷,计算力并存储力。 在第二个并发组中,每个对象按照力的比例移动其(x,y,z)。 因此,通过在并发组之间来回切换, 对象在没有竞争条件的情况下移动。 我希望系统持续运行,直到收到键盘退出请求。 我做了大量的搜索,但没有找到立足点。 请推荐一个链接,或者展示一个查询独立他人的简单示例。 我很感激我能提供MWE,但我是一个绝对的golang初学者 用C++、Python、JavaScript、LISP、FORTRAN等许多排版。 我不知道从哪里开始。我看过函数、对象等。。。没有洞察力。
请提供帮助。

听起来,在顶层,您需要一个循环,该循环交替调用一个函数来更新作用在每个“粒子”上的力,然后调用另一个函数来更新每个粒子的位置。现在,您的问题变成了:对于golang函数来说,最有效的方法是什么,使对象列表中的每个成员以某种方式更新,并且在任务完成之前不返回?(对不起,我不是戈兰人,但我不知道答案。)在我看来,你将使用成对的物体:计算每个物体之间的距离和力。您可以将对列表进行分区,并将每个对交给一个goroutine进行计算。goroutine是不可抢占的(还没有),因此您将根据您拥有的内核数量获得并行运行的goroutine组。如果你有1个,它将是连续的。第二部分也可以这样做。此外,在包含对象的所有对完成后,您可以开始处理对象的第二阶段。我希望每个对象从其已知对象列表中专门查询每个对象的(x,y,z)。换句话说,每个对象都负责自己的力计算,并通过询问它所知道的所有其他对象来完成。我的目标不是静电学,而是3空间中的连通图。