我正在开发一个涉及在Progress 9.1d中编写的遗留系统的项目。这些系统需要使用我用C语言编写的共享库。
进步人员告诉我,应用程序通过称为“appserver”的东西起作用。这个appserver有一些他们称之为“代理”的东西,当用户执行Progress应用程序时,appserver实例化(我想这就是那种方式)代理人参加请愿。代理人数量有限,超过限额时,请愿书排队等候。
因此,每个代理都执行使用我的共享库的Progress代码。我担心它们之间可能存在数据冲突。共享库没有全局变量或静态变量。共享库函数使用的所有数据都在其中创建,所有变量都是本地的。
共享库和Progress appserver位于同一UNIX服务器HP-UX 11.1
中我猜测每个新代理都有自己的Progress aplication数据副本,但是如果有的话,我不知道共享库的内容是否也会发生同样的事情......
如果有人经常使用带有Progress的共享库,是否需要采取一些并发措施?
到目前为止,我们的测试一直没有问题。
任何评论都将不胜感激,谢谢。
答案 0 :(得分:1)
每个应用服务器实例都是一个单独的UNIX进程。所以你不应该担心共享数据。
共享库可以工作,并且可以通过Progress调用,即使在像9.1D这样古老而过时的版本中 - 但Progress是积极的单线程,因此如果您的共享库以任何方式使用线程,它可能会失败。
谁负责从4GL代码调用共享库?您?还是Progress开发者?在任何一种情况下,这可能会有所帮助: