fluentmechanical如何开多线程

您好,2 02 2 年,我正在开发一个项目,在特定城市使用 Java 的 ThreadFluentMechanical 启用多线程。
然后我找啊找,终于在Java的某个特定模块中找到了这个传说中的Fluent模块。
哦,我真的有点兴奋。

然后我打开初始面板,它说我需要将原来的默认串行模式更改为并行模式。
我认为这种并行模式肯定比串行模式更有效率。

更改模式后设置线程数。
当时我把线程数设置为1 0,我想这会是一个相当大的数字。
设置完成后,我运行程序来检查效果。

结果后来发现我设置的线程数有点多了。
因为我注意到程序运行时,CPU负载极高,响应速度很慢。
哦,我当时就很迷茫,不知道如何调整。
后来我向一位老程序员请教,他说线程数要根据实际情况确定,不能随意设置。

Fluent 笔记:多线程 udf 全局变量问题

在多线程 UDF 中传递全局变量存在明显的问题。

在多线程执行过程中,不同线程访问和更新全局变量时会出现竞争条件。

由于PROFILE宏和EXECUTE_AT_END宏运行在不同的线程上,所以传输值时会发生错误。

解决方案:
1 使用并行通讯功能。
host_to_node_real_2 () 用于将变量传递给所有节点。
node_to_host_real_2 () 用于收集从所有节点到主机的变量。

2 使用全局变量和函数。
RP_Sum_Real()用于汇总所有线程的计算结果。
避免重复计算并提高效率。

3 设计同步逻辑。
合理安排宏的执行顺序。
避免同时读写同一个全局变量。

示例: c DEFINE_EXECUTE_AT_END(更新) { 实际值 = 计算值(); host_to_node_real_2 (值,值); }
DEFINE_PROFILE(用法、线程、位置) { 面_tf; 实际值; node_to_host_real_2 (值, 值); F_PROFILE(f, 螺纹, 位置) = 值 2 .0; }
注意:并行通信有开销并且调试起来很复杂。
先做单线程测试。