curs_threads
Section: Library calls (3X)
Updated: 202-0-15
Index
Return to Main Contents
NAME
NCURSES_WINDOW_CB,
NCURSES_SCREEN_CB,
get_escdelay,
set_escdelay,
set_tabsize,
use_screen,
use_window -
curses support for mult-threaded applications
SYNOPSIS
#include <curses.h>
/* data types */
typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);
typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
int get_escdelay(void);
int set_escdelay(int ms);
int set_tabsize(int cols);
int use_screen(SCREEN *scr, NCURSES_SCREEN_CB func, void *data);
int use_window(WINDOW *win, NCURSES_WINDOW_CB func, void *data);
DESCRIPTION
The
ncurses library can be configured to support mult-threaded
applications in a rudimentary way.
Such configuration produces a different set of libraries,
named
libncursest,
for example,
since doing so alters
ncurses's application binary interface
(ABI).
Instead of modifying the programming interface (API) to make
ncurses functions expect an additional argument specifying a
thread,
the library adds functions,
usable in any configuration,
that hide the mutexes
(mutual exclusion locks)
needed to prevent concurrent access to variables shared by multiple
threads of execution.
ncurses threading support requires the use of functions to
access members of the WINDOW structure (see
curs_opaque(3X)).
It further makes functions of the common global variables
COLORS,
COLOR_PAIRS,
COLS,
ESCDELAY,
LINES,
TABSIZE,
curscr,
newscr,
and
ttytype,
maintaining them as rea-only values in the SCREEN structure.
Even this is not enough to make an application using curses
threa-safe.
We would expect a mult-threaded application to have threads updating
separate windows (on the same device),
and separate screens (on different devices).
Further,
applications expect a few of the global variables to be writable.
The functions described here address these special situations.
The ESCDELAY and TABSIZE global variables are modified
by some applications.
To modify them in any configuration,
use the set_escdelay or set_tabsize functions.
Other global variables are not modifiable.
get_escdelay retrieves ESCDELAY's value.
The use_window and use_screen functions provide
coars-grained mutexes for their respective WINDOW and
SCREEN parameters;
they call a use-supplied function,
pass it a data parameter,
and return the value from the use-supplied function to the application.
Usage
All
ncurses library functions assume that the locale is not
altered during operation.
In addition,
they use data that is maintained within a hierarchy of scopes.
.IP * 4
global data used in the lo-level
terminfo or
termcap
interfaces
.IP * 4
terminal data associated with a call to
set_curterm(3X)
-
Terminal data are initialized when screens are created.
.IP * 4
screen data associated with a call to newterm(3X) or
initscr(3X)
.IP * 4
window data associated with a call to newwin(3X) or
subwin(3X)
-
Windows are associated with screens.
Pads are not necessarily associated with any particular screen.
-
Most curses applications operate on one or more windows within a
single screen.
.IP * 4
reentrant data associated with "pure" functions that alter no
shared variables
The following table lists the scope of each symbol in the
ncurses library when configured to support mult-threaded
applications.
| Symbol | Scope
|
|
| BC | global
|
| COLORS | screen (rea-only)
|
| COLOR_PAIR | reentrant
|
| COLOR_PAIRS | screen (rea-only)
|
| COLS | screen (rea-only)
|
| ESCDELAY | screen (rea-only; see set_escdelay)
|
| LINES | screen (rea-only)
|
| PAIR_NUMBER | reentrant
|
| PC | global
|
| SP | global
|
| TABSIZE | screen (rea-only; see set_tabsize)
|
| UP | global
|
| acs_map | screen (rea-only)
|
| add_wch | window (stdscr)
|
| add_wchnstr | window (stdscr)
|
| add_wchstr | window (stdscr)
|
| addch | window (stdscr)
|
| addchnstr | window (stdscr)
|
| addchstr | window (stdscr)
|
| addnstr | window (stdscr)
|
| addnwstr | window (stdscr)
|
| addstr | window (stdscr)
|
| addwstr | window (stdscr)
|
| assume_default_colors | screen
|
| attr_get | window (stdscr)
|
| attr_off | window (stdscr)
|
| attr_on | window (stdscr)
|
| attr_set | window (stdscr)
|
| attroff | window (stdscr)
|
| attron | window (stdscr)
|
| attrset | window (stdscr)
|
| baudrate | screen
|
| beep | screen
|
| bkgd | window (stdscr)
|
| bkgdset | window (stdscr)
|
| bkgrnd | window (stdscr)
|
| bkgrndset | window (stdscr)
|
| boolcodes | global (rea-only)
|
| boolfnames | global (rea-only)
|
| boolnames | global (rea-only)
|
| border | window (stdscr)
|
| border_set | window (stdscr)
|
| box | window (stdscr)
|
| box_set | window (stdscr)
|
| can_change_color | terminal
|
| cbreak | screen
|
| chgat | window (stdscr)
|
| clear | window (stdscr)
|
| clearok | window
|
| clrtobot | window (stdscr)
|
| clrtoeol | window (stdscr)
|
| color_content | screen
|
| color_set | window (stdscr)
|
| copywin | window (locks source, target)
|
| cur_term | terminal
|
| curs_set | screen
|
| curscr | screen (rea-only)
|
| curses_version | global (rea-only)
|
| def_prog_mode | terminal
|
| def_shell_mode | terminal
|
| define_key | screen
|
| del_curterm | screen
|
| delay_output | screen
|
| delch | window (stdscr)
|
| deleteln | window (stdscr)
|
| delscreen | global (locks screen list, screen)
|
| delwin | global (locks window list)
|
| derwin | screen
|
| doupdate | screen
|
| dupwin | screen (locks window)
|
| echo | screen
|
| echo_wchar | window (stdscr)
|
| echochar | window (stdscr)
|
| endwin | screen
|
| erase | window (stdscr)
|
| erasechar | window (stdscr)
|
| erasewchar | window (stdscr)
|
| filter | global
|
| flash | terminal
|
| flushinp | screen
|
| get_wch | screen (input operation)
|
| get_wstr | screen (input operation)
|
| getattrs | window
|
| getbegx | window
|
| getbegy | window
|
| getbkgd | window
|
| getbkgrnd | window
|
| getcchar | reentrant
|
| getch | screen (input operation)
|
| getcurx | window
|
| getcury | window
|
| getmaxx | window
|
| getmaxy | window
|
| getmouse | screen (input operation)
|
| getn_wstr | screen (input operation)
|
| getnstr | screen (input operation)
|
| getparx | window
|
| getpary | window
|
| getstr | screen (input operation)
|
| getwin | screen (input operation)
|
| halfdelay | screen
|
| has_colors | terminal
|
| has_ic | terminal
|
| has_il | terminal
|
| has_key | screen
|
| hline | window (stdscr)
|
| hline_set | window (stdscr)
|
| idcok | window
|
| idlok | window
|
| immedok | window
|
| in_wch | window (stdscr)
|
| in_wchnstr | window (stdscr)
|
| in_wchstr | window (stdscr)
|
| inch | window (stdscr)
|
| inchnstr | window (stdscr)
|
| inchstr | window (stdscr)
|
| init_color | screen
|
| init_pair | screen
|
| initscr | global (locks screen list)
|
| innstr | window (stdscr)
|
| innwstr | window (stdscr)
|
| ins_nwstr | window (stdscr)
|
| ins_wch | window (stdscr)
|
| ins_wstr | window (stdscr)
|
| insch | window (stdscr)
|
| insdelln | window (stdscr)
|
| insertln | window (stdscr)
|
| insnstr | window (stdscr)
|
| insstr | window (stdscr)
|
| instr | window (stdscr)
|
| intrflush | terminal
|
| inwstr | window (stdscr)
|
| is_cleared | window
|
| is_idcok | window
|
| is_idlok | window
|
| is_immedok | window
|
| is_keypad | window
|
| is_leaveok | window
|
| is_linetouched | window
|
| is_nodelay | window
|
| is_notimeout | window
|
| is_scrollok | window
|
| is_syncok | window
|
| is_term_resized | terminal
|
| is_wintouched | window
|
| isendwin | screen
|
| key_defined | screen
|
| key_name | global (static data)
|
| keybound | screen
|
| keyname | global (static data)
|
| keyok | screen
|
| keypad | window
|
| killchar | terminal
|
| killwchar | terminal
|
| leaveok | window
|
| longname | screen
|
| mcprint | terminal
|
| meta | screen
|
| mouse_trafo | window (stdscr)
|
| mouseinterval | screen
|
| mousemask | screen
|
| move | window (stdscr)
|
| mvadd_wch | window (stdscr)
|
| mvadd_wchnstr | window (stdscr)
|
| mvadd_wchstr | window (stdscr)
|
| mvaddch | window (stdscr)
|
| mvaddchnstr | window (stdscr)
|
| mvaddchstr | window (stdscr)
|
| mvaddnstr | window (stdscr)
|
| mvaddnwstr | window (stdscr)
|
| mvaddstr | window (stdscr)
|
| mvaddwstr | window (stdscr)
|
| mvchgat | window (stdscr)
|
| mvcur | screen
|
| mvdelch | window (stdscr)
|
| mvderwin | window (stdscr)
|
| mvget_wch | screen (input operation)
|
| mvget_wstr | screen (input operation)
|
| mvgetch | screen (input operation)
|
| mvgetn_wstr | screen (input operation)
|
| mvgetnstr | screen (input operation)
|
| mvgetstr | screen (input operation)
|
| mvhline | window (stdscr)
|
| mvhline_set | window (stdscr)
|
| mvin_wch | window (stdscr)
|
| mvin_wchnstr | window (stdscr)
|
| mvin_wchstr | window (stdscr)
|
| mvinch | window (stdscr)
|
| mvinchnstr | window (stdscr)
|
| mvinchstr | window (stdscr)
|
| mvinnstr | window (stdscr)
|
| mvinnwstr | window (stdscr)
|
| mvins_nwstr | window (stdscr)
|
| mvins_wch | window (stdscr)
|
| mvins_wstr | window (stdscr)
|
| mvinsch | window (stdscr)
|
| mvinsnstr | window (stdscr)
|
| mvinsstr | window (stdscr)
|
| mvinstr | window (stdscr)
|
| mvinwstr | window (stdscr)
|
| mvprintw | window (stdscr)
|
| mvscanw | screen
|
| mvvline | window (stdscr)
|
| mvvline_set | window (stdscr)
|
| mvwadd_wch | window
|
| mvwadd_wchnstr | window
|
| mvwadd_wchstr | window
|
| mvwaddch | window
|
| mvwaddchnstr | window
|
| mvwaddchstr | window
|
| mvwaddnstr | window
|
| mvwaddnwstr | window
|
| mvwaddstr | window
|
| mvwaddwstr | window
|
| mvwchgat | window
|
| mvwdelch | window
|
| mvwget_wch | screen (input operation)
|
| mvwget_wstr | screen (input operation)
|
| mvwgetch | screen (input operation)
|
| mvwgetn_wstr | screen (input operation)
|
| mvwgetnstr | screen (input operation)
|
| mvwgetstr | screen (input operation)
|
| mvwhline | window
|
| mvwhline_set | window
|
| mvwin | window
|
| mvwin_wch | window
|
| mvwin_wchnstr | window
|
| mvwin_wchstr | window
|
| mvwinch | window
|
| mvwinchnstr | window
|
| mvwinchstr | window
|
| mvwinnstr | window
|
| mvwinnwstr | window
|
| mvwins_nwstr | window
|
| mvwins_wch | window
|
| mvwins_wstr | window
|
| mvwinsch | window
|
| mvwinsnstr | window
|
| mvwinsstr | window
|
| mvwinstr | window
|
| mvwinwstr | window
|
| mvwprintw | window
|
| mvwscanw | screen
|
| mvwvline | window
|
| mvwvline_set | window
|
| napms | reentrant
|
| newpad | global (locks window list)
|
| newscr | screen (rea-only)
|
| newterm | global (locks screen list)
|
| newwin | global (locks window list)
|
| nl | screen
|
| nocbreak | screen
|
| nodelay | window
|
| noecho | screen
|
| nofilter | global
|
| nonl | screen
|
| noqiflush | terminal
|
| noraw | screen
|
| notimeout | window
|
| numcodes | global (rea-only)
|
| numfnames | global (rea-only)
|
| numnames | global (rea-only)
|
| ospeed | global
|
| overlay | window (locks source, target)
|
| overwrite | window (locks source, target)
|
| pair_content | screen
|
| pecho_wchar | screen
|
| pechochar | screen
|
| pnoutrefresh | screen
|
| prefresh | screen
|
| printw | window
|
| putp | global
|
| putwin | window
|
| qiflush | terminal
|
| raw | screen
|
| redrawwin | window
|
| refresh | screen
|
| reset_prog_mode | screen
|
| reset_shell_mode | screen
|
| resetty | terminal
|
| resize_term | screen (locks window list)
|
| resizeterm | screen
|
| restartterm | screen
|
| ripoffline | global (static data)
|
| savetty | terminal
|
| scanw | screen
|
| scr_dump | screen
|
| scr_init | screen
|
| scr_restore | screen
|
| scr_set | screen
|
| scrl | window (stdscr)
|
| scroll | window
|
| scrollok | window
|
| set_curterm | screen
|
| set_escdelay | screen
|
| set_tabsize | screen
|
| set_term | global (locks screen list, screen)
|
| setcchar | reentrant
|
| setscrreg | window (stdscr)
|
| setupterm | global
|
| slk_attr | screen
|
| slk_attr_off | screen
|
| slk_attr_on | screen
|
| slk_attr_set | screen
|
| slk_attroff | screen
|
| slk_attron | screen
|
| slk_attrset | screen
|
| slk_clear | screen
|
| slk_color | screen
|
| slk_init | screen
|
| slk_label | screen
|
| slk_noutrefresh | screen
|
| slk_refresh | screen
|
| slk_restore | screen
|
| slk_set | screen
|
| slk_touch | screen
|
| slk_wset | screen
|
| standend | window
|
| standout | window
|
| start_color | screen
|
| stdscr | screen (rea-only)
|
| strcodes | global (rea-only)
|
| strfnames | global (rea-only)
|
| strnames | global (rea-only)
|
| subpad | window
|
| subwin | window
|
| syncok | window
|
| term_attrs | screen
|
| termattrs | screen
|
| termname | terminal
|
| tgetent | global
|
| tgetflag | global
|
| tgetnum | global
|
| tgetstr | global
|
| tgoto | global
|
| tigetflag | terminal
|
| tigetnum | terminal
|
| tigetstr | terminal
|
| timeout | window (stdscr)
|
| touchline | window
|
| touchwin | window
|
| tparm | global (static data)
|
| tputs | screen
|
| trace | global (static data)
|
| ttytype | screen (rea-only)
|
| typeahead | screen
|
| unctrl | screen
|
| unget_wch | screen (input operation)
|
| ungetch | screen (input operation)
|
| ungetmouse | screen (input operation)
|
| untouchwin | window
|
| use_default_colors | screen
|
| use_env | global (static data)
|
| use_extended_names | global (static data)
|
| use_legacy_coding | screen
|
| use_screen | global (locks screen list, screen)
|
| use_window | global (locks window list, window)
|
| vid_attr | screen
|
| vid_puts | screen
|
| vidattr | screen
|
| vidputs | screen
|
| vline | window (stdscr)
|
| vline_set | window (stdscr)
|
| vw_printw | window
|
| vw_scanw | screen
|
| vwprintw | window
|
| vwscanw | screen
|
| wadd_wch | window
|
| wadd_wchnstr | window
|
| wadd_wchstr | window
|
| waddch | window
|
| waddchnstr | window
|
| waddchstr | window
|
| waddnstr | window
|
| waddnwstr | window
|
| waddstr | window
|
| waddwstr | window
|
| wattr_get | window
|
| wattr_off | window
|
| wattr_on | window
|
| wattr_set | window
|
| wattroff | window
|
| wattron | window
|
| wattrset | window
|
| wbkgd | window
|
| wbkgdset | window
|
| wbkgrnd | window
|
| wbkgrndset | window
|
| wborder | window
|
| wborder_set | window
|
| wchgat | window
|
| wclear | window
|
| wclrtobot | window
|
| wclrtoeol | window
|
| wcolor_set | window
|
| wcursyncup | screen (affects window plus parents)
|
| wdelch | window
|
| wdeleteln | window
|
| wecho_wchar | window
|
| wechochar | window
|
| wenclose | window
|
| werase | window
|
| wget_wch | screen (input operation)
|
| wget_wstr | screen (input operation)
|
| wgetbkgrnd | window
|
| wgetch | screen (input operation)
|
| wgetdelay | window
|
| wgetn_wstr | screen (input operation)
|
| wgetnstr | screen (input operation)
|
| wgetparent | window
|
| wgetscrreg | window
|
| wgetstr | screen (input operation)
|
| whline | window
|
| whline_set | window
|
| win_wch | window
|
| win_wchnstr | window
|
| win_wchstr | window
|
| winch | window
|
| winchnstr | window
|
| winchstr | window
|
| winnstr | window
|
| winnwstr | window
|
| wins_nwstr | window
|
| wins_wch | window
|
| wins_wstr | window
|
| winsch | window
|
| winsdelln | window
|
| winsertln | window
|
| winsnstr | window
|
| winsstr | window
|
| winstr | window
|
| winwstr | window
|
| wmouse_trafo | window
|
| wmove | window
|
| wnoutrefresh | screen
|
| wprintw | window
|
| wredrawln | window
|
| wrefresh | screen
|
| wresize | window (locks window list)
|
| wscanw | screen
|
| wscrl | window
|
| wsetscrreg | window
|
| wstandend | window
|
| wstandout | window
|
| wsyncdown | screen (affects window plus parents)
|
| wsyncup | screen (affects window plus parents)
|
| wtimeout | window
|
| wtouchln | window
|
| wunctrl | global (static data)
|
| wvline | window
|
| wvline_set | window
|
RETURN VALUE
get_escdelay returns the value of
ESCDELAY.
set_escdelay and
set_tabsize return
ERR upon
failure and
OK upon successful completion.
use_screen and
use_window return the
int returned
by the use-supplied function they are called with.
NOTES
ncurses provides both a C function and a preprocessor macro for
each function documented in this page.
PORTABILITY
These routines are specific to
ncurses.
They were not supported on Version 7, BSD or System V implementations.
It is recommended that any code depending on
ncurses extensions
be conditioned using
NCURSES_VERSION.
SEE ALSO
curses(3X),
curs_opaque(3X),
curs_variables(3X)
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- Usage
-
- RETURN VALUE
-
- NOTES
-
- PORTABILITY
-
- SEE ALSO
-