Man*_*ork 3 ncurses thread-safety
NCurses 似乎是一个流行的库。它的弱点之一是它不是线程安全的。将共享资源包装在互斥体中应该不难。
是否有具体原因,为什么没有人启动线程安全分支?(法律问题、引入平台依赖性……)
编辑:我的意思不是 use_screen 或 use_window 函数。这些显然要求用户更改其基于 NCurses 的代码。应该可以向 NCurses 本身内的共享资源添加互斥体,并且所有访问函数在对窗口执行某些操作之前都会获取互斥体。我在 NCurses 中想象这样的事情:
#if __cplusplus >= 201103L
#include <mutex>
#define THREADSAFE
#endif
...
#ifdef THREADSAFE
std::recursive_mutex mxCurscr;
#endif
...
int doupdate(void)
{
#ifdef THREADSAFE
mxCurscr.lock();
#endif
... // <-- Access the screen here.
#ifdef THREADSAFE
mxCurscr.unlock()
#endif
}
Run Code Online (Sandbox Code Playgroud)
那么,问题在哪里呢?
它已经完成了(在2008 年 11 月发布的ncurses 5.7中),但没有太多使用。例如,请参阅手册页。它不是默认配置中的功能,因为它curs_threads
| 归档时间: |
|
| 查看次数: |
1821 次 |
| 最近记录: |