Critical Section Controller(临界部分控制器)

image.png

临界部分控制器确保其子元素(采样器\控制器等)将仅由一个线程(a-1》a-2》a-3》a-4)顺序执行,在执行控制器的子元素之前先命名一个锁锁定,默认为一个名称‘global_lock’为固定的。

并发请求(线程)这个控制器时,会先根据‘锁名称(Lock name)’生成一个‘锁’,锁定控制器下的所有子元素,等到所有子元素都顺序执行完‘锁’才会释放,下一个请求(线程)才能执行,即,把原本的并发请求的并行处理方式,变成了串行处理。

线程执行时,先根据‘锁名称’生成锁,串行,是因为锁名称相同,已经被占用,无法生成新的锁,所以只能等待锁的释放,那我们是不是可以考虑让锁名称变成动态的呢?每个线程要用的时候,生成一个新的锁名称而且不重复,是不是就可以并行处理了。想要锁名称变成动态,方法很多,使用随机数函数、使用时间戳函数、使用线程数函数......, 是不是很多,只要用个自动生成值的函数就可以。

【配置解析】
Lock name 添加 线程数函数 ${__threadNum} ,让‘锁名称’变成动态,并且不能重复,这个时候就能并行处理了。

你可能感兴趣的:(Critical Section Controller(临界部分控制器))