Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 为什么我们需要将一个常量声明为共享常量?_Multithreading_Messagebroker_Ibm Integration Bus_Extended Sql - Fatal编程技术网

Multithreading 为什么我们需要将一个常量声明为共享常量?

Multithreading 为什么我们需要将一个常量声明为共享常量?,multithreading,messagebroker,ibm-integration-bus,extended-sql,Multithreading,Messagebroker,Ibm Integration Bus,Extended Sql,在ESQL中,我们有共享的常量,为什么我们需要它们,因为它们是常量,即使多个线程访问相同的值,它们也不会改变 声明MYCONST共享常量字符“我的常量” 或者通常我想知道为什么我们需要共享常量???使用我的假设,您可以声明一个共享常量,以避免在流中复制一个大变量。 例如,如果您希望每次发送相同的消息时都发送一条消息,并且希望节省时间,那么它在多实例流中可能很有用。 它可能已经存在于内存中,并且具有: DECLARE MYVAR SHARED CONSTANT BLOB X'0000' ;

在ESQL中,我们有共享的常量,为什么我们需要它们,因为它们是常量,即使多个线程访问相同的值,它们也不会改变

声明MYCONST共享常量字符“我的常量”


或者通常我想知道为什么我们需要共享常量???

使用我的假设,您可以声明一个共享常量,以避免在流中复制一个大变量。
例如,如果您希望每次发送相同的消息时都发送一条消息,并且希望节省时间,那么它在多实例流中可能很有用。 它可能已经存在于内存中,并且具有:

   DECLARE MYVAR SHARED CONSTANT BLOB X'0000' ;
我认为这种需求非常罕见。
更不常从中获益的是:如果blob太大,只会适得其反,无法加入全局变量

根据这一点,读取共享常数比读取正常常数需要更多的时间。所有共享变量(包括常量)似乎都有一个锁定机制

但可能所有非共享常量都会在每个流实例的开头复制到内存中。我想说,如果你有很多常量,而每个流只访问其中的几个,那么共享常量的性能会更好

如果性能是一个问题,我会测试哪个选项在更短的时间内处理数据。但是没有一种解决方案适合于每一个消息流