Tcl_ConditionWait man page on UnixWare

Man page or keyword search:  
man Server   3616 pages
apropos Keyword Search (all sections)
Output format
UnixWare logo
[printable version]

Threads(3)		    Tcl Library Procedures		    Threads(3)

______________________________________________________________________________

NAME
       Tcl_ConditionNotify,	   Tcl_ConditionWait,	    Tcl_GetThreadData,
       Tcl_MutexLock, Tcl_MutexUnlock - Tcl thread support.

SYNOPSIS
       #include <tcl.h>

       void
       Tcl_ConditionNotify(condPtr)

       void
       Tcl_ConditionWait(condPtr, mutexPtr, timePtr)

       Void *
       Tcl_GetThreadData(keyPtr, size)

       void
       Tcl_MutexLock(mutexPtr)

       void
       Tcl_MutexUnlock(mutexPtr)

ARGUMENTS
       Tcl_Condition	   *condPtr  (in)      A  condition  variable,	 which
					       must be associated with a mutex
					       lock.

       Tcl_Condition	   *mutexPtr (in)      A mutex lock.

       Tcl_Time		   *timePtr  (in)      A time limit on	the  condition
					       wait.   NULL  to	 wait forever.
					       Note that a polling value of  0
					       seconds	 doesn't   make	  much
					       sense.

       Tcl_ThreadDataKey   *keyPtr   (in)      This  identifies	 a  block   of
					       thread  local storage.  The key
					       should be static	 and  process-
					       wide,  yet each thread will end
					       up  associating	 a   different
					       block of storage with this key.

       int		   *size     (in)      The  size  of  the thread local
					       storage block.  This amount  of
					       data  is allocated and initial‐
					       ized to	zero  the  first  time
					       each   thread   calls  Tcl_Get‐
					       ThreadData.
_________________________________________________________________

INTRODUCTION
       Beginning with the 8.1 release, the Tcl	core  is  thread  safe,	 which
       allows  you  to incorporate Tcl into multithreaded applications without
       customizing the Tcl core.  To enable Tcl	 multithreading	 support,  you
       must  include the --enable-threads option to configure when you config‐
       ure and compile your Tcl core.

       An important contstraint of the Tcl threads implementation is that only
       the thread that created a Tcl interpreter can use that interpreter.  In
       other words, multiple threads can not access the same Tcl  interpreter.
       (However,  as  was  the	case in previous releases, a single thread can
       safely create and use multiple interpreters.)

       Tcl provides no special API for creating threads.  When writing	multi‐
       threaded applications incorporating Tcl, use the standard POSIX threads
       APIs on Unix systems and the standard Win32  threads  APIs  on  Windows
       systems.

       Tcl  does provide Tcl_ExitThread and Tcl_FinalizeThread for terminating
       threads and  invoking  optional	per-thread  exit  handlers.   See  the
       Tcl_Exit page for more information on these procedures.

       Tcl  provides  Tcl_ThreadQueueEvent  and	 Tcl_ThreadAlert  for handling
       event queueing in multithreaded applications.  See the Notifier	manual
       page for more information on these procedures.

       In this release, the Tcl language itself provides no support for creat‐
       ing multithreaded scripts (for example, scripts that could spawn a  Tcl
       interpreter  in a separate thread).  If you need to add this feature at
       this time, see the tclThreadTest.c file in the Tcl source  distribution
       for an experimental implementation of a Tcl "Thread" package implement‐
       ing thread creation and management commands at the script level.

DESCRIPTION
       A mutex is a lock that is used to serialize all threads through a piece
       of  code	 by  calling Tcl_MutexLock and Tcl_MutexUnlock.	 If one thread
       holds a mutex, any other thread calling Tcl_MutexLock will block	 until
       Tcl_MutexUnlock	is  called.   The result of locking a mutex twice from │
       the same thread is undefined.  On some platforms it will	 result	 in  a │
       deadlock.   Tcl_MutexLock and Tcl_MutexUnlock procedures are defined as
       empty macros if not compiling with threads enabled.

       A condition variable is used as a signaling  mechanism:	a  thread  can
       lock  a mutex and then wait on a condition variable with Tcl_Condition‐
       Wait.  This atomically releases the mutex lock and blocks  the  waiting
       thread  until  another thread calls Tcl_ConditionNotify.	 The caller of
       Tcl_ConditionNotify should have the associated mutex held by previously
       calling	Tcl_MutexLock, but this is not enforced.  Notifying the condi‐
       tion variable unblocks all threads waiting on the  condition  variable,
       but  they  do not proceed until the mutex is released with Tcl_MutexUn‐
       lock.  The implementation of Tcl_ConditionWait automatically locks  the
       mutex before returning.

       The caller of Tcl_ConditionWait should be prepared for spurious notifi‐
       cations by calling Tcl_ConditionWait within a  while  loop  that	 tests
       some invariant.

       The  Tcl_GetThreadData call returns a pointer to a block of thread-pri‐
       vate data.  Its argument is a key that is shared by all threads	and  a
       size  for the block of storage.	The storage is automatically allocated
       and initialized to all zeros the first time each thread	asks  for  it.
       The storage is automatically deallocated by Tcl_FinalizeThread.

INITIALIZATION
       All  of	these synchronization objects are self initializing.  They are
       implemented as opaque pointers that should be NULL upon first use.  The
       mutexes	and  condition	variables  are cleaned up by process exit han‐
       dlers.  Thread local storage is reclaimed during Tcl_FinalizeThread.

CREATING THREADS
       The API to create threads is not finalized at  this  time.   There  are
       private	facilities  to	create	threads	 that contain a new Tcl inter‐
       preter, and to send scripts among threads.  Dive	 into  tclThreadTest.c
       and tclThread.c for examples.

SEE ALSO
       Tcl_GetCurrentThread,  Tcl_ThreadQueueEvent, Tcl_ThreadAlert, Tcl_Exit‐
       Thread,	      Tcl_FinalizeThread,	  Tcl_CreateThreadExitHandler,
       Tcl_DeleteThreadExitHandler

KEYWORDS
       thread, mutex, condition variable, thread local storage

Tcl				      8.1			    Threads(3)
[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server UnixWare

List of man pages available for UnixWare

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net