【发布时间】:2015-09-04 13:28:12
【问题描述】:
用 C 编写的程序使用ncurses。 while 循环用于不断检查队列中是否有新消息到达:如果是,则将消息打印到屏幕上,然后从队列中删除:
while (condition)
{
if (queue_not_empty)
{
printw(element_from_queue);
refresh();
remove(element_from_queue);
}
}
不过,与此同时,程序应该能够从用户那里获取输入字符串,然后通过scanw 将其存储在数组char message[100] 中。
但是如果我把
while (condition)
{
if (queue_not_empty)
{
printw(element_from_queue);
refresh();
remove(element_from_queue);
}
scanw(message);
}
循环将停止,直到用户不键入字符串,并且程序将仅在用户输入之后打印队列中的新消息。不应该是这样的!队列消息可以随时到达并且应该被打印;用户消息可以随时到达,应该存储到数组中。
我想避免创建另一个线程,因为ncurses 使用多个线程会变得很奇怪。无论如何,我需要两个“当代”while 循环,一个用于打印消息,一个用于读取用户输入。
有办法解决吗?
换句话说:ncurses 是否可以打印一些输出并从用户在同一屏幕中获取一些多个字符输入,在同一个线程中?
【问题讨论】:
标签: c concurrency while-loop screen ncurses