| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> | |
| <!-- | |
| **************************************************************************** | |
| * Copyright (c) 2008 Free Software Foundation, Inc. * | |
| * * | |
| * Permission is hereby granted, free of charge, to any person obtaining a * | |
| * copy of this software and associated documentation files (the * | |
| * "Software"), to deal in the Software without restriction, including * | |
| * without limitation the rights to use, copy, modify, merge, publish, * | |
| * distribute, distribute with modifications, sublicense, and/or sell * | |
| * copies of the Software, and to permit persons to whom the Software is * | |
| * furnished to do so, subject to the following conditions: * | |
| * * | |
| * The above copyright notice and this permission notice shall be included * | |
| * in all copies or substantial portions of the Software. * | |
| * * | |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * | |
| * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * | |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * | |
| * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * | |
| * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * | |
| * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * | |
| * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * | |
| * * | |
| * Except as contained in this notice, the name(s) of the above copyright * | |
| * holders shall not be used in advertising or otherwise to promote the * | |
| * sale, use or other dealings in this Software without prior written * | |
| * authorization. * | |
| **************************************************************************** | |
| * @Id: curs_threads.3x,v 1.12 2008/04/12 18:22:51 tom Exp @ | |
| * *************************************************************************** | |
| * *************************************************************************** | |
| --> | |
| <HTML> | |
| <HEAD> | |
| <TITLE>curs_threads 3x</TITLE> | |
| <link rev=made href="mailto:bug-ncurses@gnu.org"> | |
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> | |
| </HEAD> | |
| <BODY> | |
| <H1>curs_threads 3x</H1> | |
| <HR> | |
| <PRE> | |
| <!-- Manpage converted by man2html 3.0.1 --> | |
| <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> | |
| </PRE> | |
| <H2>NAME</H2><PRE> | |
| <STRONG>use_screen</STRONG>, <STRONG>use_window</STRONG> - <STRONG>curses</STRONG> thread support | |
| </PRE> | |
| <H2>SYNOPSIS</H2><PRE> | |
| <STRONG>#include</STRONG> <STRONG><curses.h></STRONG> | |
| <STRONG>typedef</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_WINDOW_CB)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG> <STRONG>type-</STRONG> | |
| <STRONG>def</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_SCREEN_CB)(SCREEN</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG> | |
| <STRONG>int</STRONG> <STRONG>set_escdelay(int</STRONG> <STRONG>size);</STRONG> | |
| <STRONG>int</STRONG> <STRONG>set_tabsize(int</STRONG> <STRONG>size);</STRONG> | |
| <STRONG>int</STRONG> <STRONG>use_screen(SCREEN</STRONG> <STRONG>*scr,</STRONG> <STRONG>NCURSES_WINDOW_CB</STRONG> <STRONG>func,</STRONG> <STRONG>void</STRONG> | |
| <STRONG>*data);</STRONG> | |
| <STRONG>int</STRONG> <STRONG>use_window(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>NCURSES_SCREEN_CB</STRONG> <STRONG>func,</STRONG> <STRONG>void</STRONG> | |
| <STRONG>*data);</STRONG> | |
| </PRE> | |
| <H2>DESCRIPTION</H2><PRE> | |
| This implementation can be configured to provide rudimen- | |
| tary support for multi-threaded applications. This makes | |
| a different set of libraries, e.g., <EM>libncursest</EM> since the | |
| binary interfaces are different. | |
| Rather than modify the interfaces to pass a thread speci- | |
| fier to each function, it adds a few functions which can | |
| be used in any configuration which hide the mutex's needed | |
| to prevent concurrent use of the global variables when | |
| configured for threading. | |
| In addition to forcing access to members of the <STRONG>WINDOW</STRONG> | |
| structure to be via functions (see <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>), it | |
| makes functions of the common global variables, e.g., COL- | |
| ORS, COLOR_PAIRS, COLS, ESCDELAY, LINES, TABSIZE curscr, | |
| newscr and ttytype. Those variables are maintained as | |
| read-only values, stored in the <STRONG>SCREEN</STRONG> structure. | |
| Even this is not enough to make a thread-safe application | |
| using curses. A multi-threaded application would be ex- | |
| pected to have threads updating separate windows (within | |
| the same device), or updating on separate screens (on dif- | |
| ferent devices). Also, a few of the global variables are | |
| considered writable by some applications. 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 <STRONG>set_escdelay</STRONG> or <STRONG>set_tabsize</STRONG> functions. Other | |
| global variables are not modifiable. | |
| The <STRONG>use_window</STRONG> and <STRONG>use_screen</STRONG> functions provide coarse | |
| granularity mutexes for their respective <STRONG>WINDOW</STRONG> and <STRONG>SCREEN</STRONG> | |
| parameters, and call a user-supplied function, passing it | |
| a <EM>data</EM> parameter, and returning the value from the user- | |
| supplied function to the application. | |
| <STRONG>USAGE</STRONG> | |
| All of the ncurses library functions assume that the lo- | |
| cale is not altered during operation. In addition, they | |
| use data which is maintained within a hierarchy of scopes. | |
| - global data, e.g., used in the low-level termin- | |
| fo or termcap interfaces. | |
| - terminal data, e.g., associated with a call to | |
| <EM>set</EM><STRONG>_</STRONG><EM>curterm</EM>. The terminal data are initialized | |
| when screens are created. | |
| - screen data, e.g., associated with a call to | |
| <EM>newterm</EM> or <EM>initscr</EM>. | |
| - window data, e.g., associated with a call to | |
| <EM>newwin</EM> or <EM>subwin</EM>. Windows are associated with | |
| screens. Pads are not necessarily associated | |
| with a particular screen. | |
| Most curses applications operate on one or more | |
| windows within a single screen. | |
| - reentrant, i.e., it uses only the data passed as | |
| parameters. | |
| This table lists the scope of data used for each symbol in | |
| the ncurses library when it is configured to support | |
| threading: | |
| Symbol Scope | |
| ------------------------------------------------------------- | |
| BC global | |
| COLORS screen (readonly) | |
| COLOR_PAIR reentrant | |
| COLOR_PAIRS screen (readonly) | |
| COLS screen (readonly) | |
| ESCDELAY screen (readonly, see <EM>set</EM><STRONG>_</STRONG><EM>escdelay</EM>) | |
| LINES screen (readonly) | |
| PAIR_NUMBER reentrant | |
| PC global | |
| SP global | |
| TABSIZE screen (readonly) | |
| UP global | |
| acs_map screen (readonly) | |
| 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 (readonly) | |
| boolfnames global (readonly) | |
| boolnames global (readonly) | |
| 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 (readonly) | |
| curses_version global (readonly) | |
| 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(screenlist, screen) | |
| delwin global locks(windowlist) | |
| 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(screenlist) | |
| 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(windowlist) | |
| newscr screen (readonly) | |
| newterm global locks(screenlist) | |
| newwin global locks(windowlist) | |
| nl screen | |
| nocbreak screen | |
| nodelay window | |
| noecho screen | |
| nofilter global | |
| nonl screen | |
| noqiflush terminal | |
| noraw screen | |
| notimeout window | |
| numcodes global (readonly) | |
| numfnames global (readonly) | |
| numnames global (readonly) | |
| 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(windowlist) | |
| 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(screenlist, 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 (readonly) | |
| strcodes global (readonly) | |
| strfnames global (readonly) | |
| strnames global (readonly) | |
| 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 (readonly) | |
| 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(screenlist, screen) | |
| use_window global locks(windowlist, 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) | |
| 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(windowlist) | |
| 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 | |
| </PRE> | |
| <H2>RETURN VALUE</H2><PRE> | |
| These functions all return TRUE or FALSE, except as noted. | |
| </PRE> | |
| <H2>NOTES</H2><PRE> | |
| Both a macro and a function are provided for each name. | |
| </PRE> | |
| <H2>PORTABILITY</H2><PRE> | |
| 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 ex- | |
| tensions be conditioned using NCURSES_VERSION. | |
| </PRE> | |
| <H2>SEE ALSO</H2><PRE> | |
| <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> | |
| <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> | |
| </PRE> | |
| <HR> | |
| <ADDRESS> | |
| Man(1) output converted with | |
| <a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> | |
| </ADDRESS> | |
| </BODY> | |
| </HTML> |