首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我能让Windows中的Perl读取并发运行吗?

我能让Windows中的Perl读取并发运行吗?
EN

Stack Overflow用户
提问于 2008-09-17 18:37:45
回答 3查看 1K关注 0票数 2

我有一个Perl脚本,我正在尝试使用Perl线程(使用线程)来设置它。当我运行简单测试时,一切正常,但是当我执行实际脚本(它让线程运行多个SQL_Plus会话)时,每个SQL_Plus会话按顺序运行(即线程1的sqlplus运行步骤1-5,然后线程2的sqlplus运行步骤6-11,等等)。

我以为我明白线程会进行并发处理,但有些地方不对劲。有什么想法吗,还是我应该做一些其他的Perl魔术?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-09-17 19:20:23

以下是一些可能的解释:

  1. 您是在多核处理器还是多处理器机器上运行这个脚本?如果您只有一个CPU,那么在任何时候只有一个线程可以使用它。步骤1-6涉及的事务或锁是否会阻止执行concurrently?
  2. Are ?您肯定您正在使用到数据库的多个连接,而不是在线程之间共享一个?

票数 4
EN

Stack Overflow用户

发布于 2008-09-17 18:45:16

实际上,您无法保证线程执行的顺序。因此,这种行为(如果不是你期望的那样)并不是真的错。

我怀疑你正在进行某种同步。可能只是让我们自己被调用一次吗?有些程序这样做..。

其他可能性:

  • 线程创建和进程创建(您正在为SQL*Plus创建子进程,不是吗?)比运行线程花费的时间更长,所以线程1甚至在线程2启动
  • 之前就完成了,您正在使用强制数据库更新同步的SQL脚本中的事务。
票数 2
EN

Stack Overflow用户

发布于 2008-09-18 04:02:25

检查数据库设置。你可能会发现它是以保守的方式设置的。这将导致即使是较小的读取也会阻止对该信息的所有访问。

您还可能需要调用threads::yield

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/86220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档