Concurrency 从Progress 9.1d调用的线程安全共享库

Concurrency 从Progress 9.1d调用的线程安全共享库,concurrency,shared-libraries,progress-4gl,Concurrency,Shared Libraries,Progress 4gl,我正在从事一个项目,该项目涉及在Progress9.1d中编写的遗留系统。这些系统需要使用我用C语言编程的共享库 进步人士告诉我,应用程序通过一种叫做“应用服务器”的东西工作。这个appserver有一些他们称之为“代理”的东西,当用户执行Progress应用程序时,appserver会实例化(我想是这样称呼的)一个代理来参加请愿。代理数量有限,超过限制后,请愿书将排队 因此,每个代理都执行使用我的共享库的进度代码。我担心的是,它们之间可能存在数据冲突。共享库既没有全局变量,也没有静态变量。共享

我正在从事一个项目,该项目涉及在Progress9.1d中编写的遗留系统。这些系统需要使用我用C语言编程的共享库

进步人士告诉我,应用程序通过一种叫做“应用服务器”的东西工作。这个appserver有一些他们称之为“代理”的东西,当用户执行Progress应用程序时,appserver会实例化(我想是这样称呼的)一个代理来参加请愿。代理数量有限,超过限制后,请愿书将排队

因此,每个代理都执行使用我的共享库的进度代码。我担心的是,它们之间可能存在数据冲突。共享库既没有全局变量,也没有静态变量。共享库函数使用的所有数据都在其中创建,所有变量都是局部变量

共享库和Progress appserver位于同一台UNIX服务器HP-UX 11.1中

我猜每个新代理都有自己的Progress应用程序数据副本,但如果有,我不知道共享库的内容是否也有相同的情况

如果有人在使用共享库的过程中取得了进步,那么有没有一些措施可以用来提高并发性

到目前为止,我们的测试没有问题


如果您有任何意见,我们将不胜感激。

每个应用服务器实例都是一个单独的UNIX进程。所以你不应该再担心共享数据了

共享库可以工作,也可以通过Progress调用,即使是在9.1D这样一个古老而过时的版本上——但是Progress是积极的单线程,所以如果您的共享库以任何方式使用线程,它可能会失败

谁负责从4GL代码调用共享库?你呢?还是进展开发者?在任何一种情况下,这都可能有帮助:


哇,欢迎来到石器时代!:)严肃地说,您说过您的共享库没有任何在方法之间共享的组件,那么您关心的冲突是什么呢?听起来你很好。另外,要回答您关于appserver的问题:代码是由应用程序缓存的,而不是appserver本身(它只是某种中间人)。谢谢您的回答。进度开发人员负责,我将与他们共享您的文档。:)不,幸运的是共享库不使用线程。当你说“每个应用服务器实例”时,这些就是所谓的代理,对吗?没错。代理是它自己的进程——通常您会在“ps”中看到它作为_proapsv(这是默认的可执行文件——一些供应商出于各种原因将其重命名)。数据类型映射和回调是另外两个“gotchyas”。简单的数据类型(int、float、string)就可以了。结构和指针可能很麻烦(并非总是不可能,但可能是一个挑战)。回调可能根本不起作用。