curs_threads - curses thread support


   #include <curses.h>

   typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);
   typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
   int get_escdelay(void);
   int set_escdelay(int size);
   int set_tabsize(int size);
   int use_screen(SCREEN *scr, NCURSES_SCREEN_CB func, void *data);
   int use_window(WINDOW *win, NCURSES_WINDOW_CB func, void *data);


   This  implementation  can  be configured to provide rudimentary support
   for  multi-threaded  applications.   This  makes  a  different  set  of
   libraries, e.g., libncursest since the binary interfaces are different.

   Rather  than  modify  the interfaces to pass a thread specifier 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 WINDOW structure to  be
   via  functions  (see curs_opaque(3X)), it makes functions of the common
   global variables, e.g., COLORS,  COLOR_PAIRS,  COLS,  ESCDELAY,  LINES,
   TABSIZE  curscr, newscr and ttytype.  Those variables are maintained as
   read-only values, stored in the SCREEN structure.

   Even this is not enough to make a thread-safe application using curses.
   A multi-threaded application would be expected to have threads updating
   separate windows (within the same  device),  or  updating  on  separate
   screens  (on  different  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
   set_escdelay  or set_tabsize functions.  Other global variables are not

   The get_escdelay function returns the value for ESCDELAY.

   The use_window and  use_screen  functions  provide  coarse  granularity
   mutexes  for  their respective WINDOW and SCREEN parameters, and call a
   user-supplied function, passing it a data parameter, and returning  the
   value from the user-supplied function to the application.

   All  of  the  ncurses  library  functions assume that the locale 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 terminfo or termcap

      *   terminal data, e.g., associated with a call to set_curterm.  The
          terminal data are initialized when screens are created.

      *   screen data, e.g., associated with a call to newterm or initscr.

      *   window  data,  e.g., associated with a call to newwin or subwin.
          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 set_escdelay)
        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)
        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(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


   These functions all return TRUE or FALSE, except as noted.


   Both a macro and a function are provided for each name.


   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(3NCURSES), opaque(3NCURSES), curses_variables(3NCURSES).



Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.

Free Software

Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.

Free Books

The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.