Multithreading 为什么我们需要将一个常量声明为共享常量?
在ESQL中,我们有共享的常量,为什么我们需要它们,因为它们是常量,即使多个线程访问相同的值,它们也不会改变 声明MYCONST共享常量字符“我的常量”Multithreading 为什么我们需要将一个常量声明为共享常量?,multithreading,messagebroker,ibm-integration-bus,extended-sql,Multithreading,Messagebroker,Ibm Integration Bus,Extended Sql,在ESQL中,我们有共享的常量,为什么我们需要它们,因为它们是常量,即使多个线程访问相同的值,它们也不会改变 声明MYCONST共享常量字符“我的常量” 或者通常我想知道为什么我们需要共享常量???使用我的假设,您可以声明一个共享常量,以避免在流中复制一个大变量。 例如,如果您希望每次发送相同的消息时都发送一条消息,并且希望节省时间,那么它在多实例流中可能很有用。 它可能已经存在于内存中,并且具有: DECLARE MYVAR SHARED CONSTANT BLOB X'0000' ;
或者通常我想知道为什么我们需要共享常量???使用我的假设,您可以声明一个共享常量,以避免在流中复制一个大变量。
例如,如果您希望每次发送相同的消息时都发送一条消息,并且希望节省时间,那么它在多实例流中可能很有用。 它可能已经存在于内存中,并且具有:
DECLARE MYVAR SHARED CONSTANT BLOB X'0000' ;
我认为这种需求非常罕见。更不常从中获益的是:如果blob太大,只会适得其反,无法加入全局变量 根据这一点,读取共享常数比读取正常常数需要更多的时间。所有共享变量(包括常量)似乎都有一个锁定机制 但可能所有非共享常量都会在每个流实例的开头复制到内存中。我想说,如果你有很多常量,而每个流只访问其中的几个,那么共享常量的性能会更好 如果性能是一个问题,我会测试哪个选项在更短的时间内处理数据。但是没有一种解决方案适合于每一个消息流