我正在使用curses模块为服务器应用程序编写前端。 由curses返回的主窗口分为2个子窗口。 屏幕的上半部分打印服务器的输出,而底线则使用window.getstr()输入。 有时当我输入文本并且上半部分正在更新时,整个屏幕变得疯狂,随机字符替换现有字符。 是否有特定原因或者是诅咒bug?
I am writing a front end for a server application using the curses module. THe main windows returned by curses is divided into 2 sub-windows. The top half of the screen prints output from the server while the bottom line takes input with window.getstr(). Sometimes when I am entering text and the top half is updating the whole screen goes crazy with random characters replacing the existing characters. Is there a specific cause for this or is it a curses bug?
最满意答案
我猜你在使用一个线程来更新上部显示,而window.getstr()在主线程中运行?
如果是这样,问题是curses终端状态是无法同时从两个不同线程更新的共享资源。 您需要将终端置于非阻塞模式,使用window.getch()来构建输入字符串,并让您的线程将上层窗口更新任务传递给主线程。
I'm guessing you are using a thread to update the upper display while window.getstr() runs in the main thread?
If so, the problem is that the curses terminal state is a shared resource that can't be updated from two different threads simultaneously. You need to put the terminal into non-blocking mode, use window.getch() to build up an input string and have your thread pass the upper window update task to the main thread.
更多推荐
发布评论