0

我正在编写一个产生多个子进程的工具。事实上 3 级子进程来加速整个逻辑/进程。

为了在终端中显示输出,我选择了 Curses::UI。curses ui 对象/小部件在父/子关系的每个级别创建,并在子进程的最后一级进行操作。这种多层次的子进程似乎导致了curses显示的问题。

我认为如果我在所有子/父进程中只共享一个 curses ui 对象,它会很稳定。

为了实现这种共享,我正在尝试使用 Storable/Shareable 模块,但由于以下错误而无法使其运行:

quicode sub { │ │ 退出;│ │ } 导致错误:在(eval 99)第 2 行,my_curser.pl 第 147 行,操作掩码捕获了“退出” │ 代码子 {──────────────── ────────────────────────────────────────────────── ────────────────────────────────────────────────── ────────────────────────────────────────────────── ──────────┘ 退出;导致错误:在 my_curser 处 (eval 99) 第 2 行的操作掩码捕获了“退出”。

是否可以跨多个进程共享 curses ui 对象?

4

1 回答 1

0

curses依赖于 C 和终端或终端仿真器状态,即使从 C 也不能在进程之间可靠地共享,并且对于 Perl 包装器(例如UI::Curses. (终端只有一个“当前位置”/光标位置;考虑如果不同的子进程尝试同时更新显示的不同部分的小部件会发生什么。)因此,您无法在子进程之间共享这些小部件.

一般来说,更好的设计是将线程或进程专用于 UI,并将处理的其他方面分配给其他线程/进程。

于 2012-04-24T06:34:49.147 回答