pthreads man page on SunOS

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

threads(5)	      Standards, Environments, and Macros	    threads(5)

NAME
       threads, pthreads - POSIX pthreads and Solaris threads concepts

SYNOPSIS
   POSIX
       cc -mt [ flag... ] file... [ -lrt library... ]

       #include <pthread.h>

   Solaris
       cc -mt [ flag... ] file... [ library... ]

       #include <sched.h>

       #include <thread.h>

DESCRIPTION
       POSIX  and  Solaris  threads  each have their own implementation within
       libc(3LIB). Both implementations are interoperable, their functionality
       similar,	 and  can  be  used  within  the  same application. Only POSIX
       threads are guaranteed to be fully portable  to	other  POSIX-compliant
       environments.  POSIX  and  Solaris  threads  require  different source,
       include files and linking libraries. See SYNOPSIS.

   Similarities
       Most of the POSIX and Solaris  threading	 functions  have  counterparts
       with  each other. POSIX function names, with the exception of the sema‐
       phore names, have a "pthread" prefix. Function names for similar	 POSIX
       and  Solaris  functions	have similar endings. Typically, similar POSIX
       and Solaris functions have the same number and use of arguments.

   Differences
       POSIX pthreads and Solaris threads differ in the following ways:

	   o	  POSIX threads are more portable.

	   o	  POSIX threads establish  characteristics   for  each	thread
		  according to configurable attribute objects.

	   o	  POSIX pthreads implement thread cancellation.

	   o	  POSIX pthreads enforce scheduling algorithms.

	   o	  POSIX	 pthreads  allow  for  clean-up	 handlers  for fork(2)
		  calls.

	   o	  Solaris threads can be suspended and continued.

	   o	  Solaris threads implement daemon threads, for	 whose	demise
		  the process does not wait.

FUNCTION COMPARISON
       The  following  table  compares	the POSIX pthreads and Solaris threads
       functions. When a comparable interface is not available either in POSIX
       pthreads	 or Solaris threads, a hyphen (-) appears in the column.

   Functions Related to Creation
       POSIX				Solaris

       pthread_create()			thr_create()
       pthread_attr_init()		-
       pthread_attr_setdetachstate()	-
       pthread_attr_getdetachstate()	-
       pthread_attr_setinheritsched()	-
       pthread_attr_getinheritsched()	-
       pthread_attr_setschedparam()	-
       pthread_attr_getschedparam()	-
       pthread_attr_setschedpolicy()	-
       pthread_attr_getschedpolicy()	-
       pthread_attr_setscope()		-
       pthread_attr_getscope()		-
       pthread_attr_setstackaddr()	-
       pthread_attr_getstackaddr()	-
       pthread_attr_setstacksize()	-
       pthread_attr_getstacksize()	-
       pthread_attr_getguardsize()	-
       pthread_attr_setguardsize()	-
       pthread_attr_destroy()		-
       -				thr_min_stack()

   Functions Related to Exit
       POSIX			     Solaris
       pthread_exit()		     thr_exit()
       pthread_join()		     thr_join()
       pthread_detach()		     -

   Functions Related to Thread Specific Data
       POSIX			     Solaris
       pthread_key_create()	     thr_keycreate()
       pthread_setspecific()	     thr_setspecific()
       pthread_getspecific()	     thr_getspecific()
       pthread_key_delete()	     -

   Functions Related to Signals
       POSIX			     Solaris
       pthread_sigmask()	     thr_sigsetmask()
       pthread_kill()		     thr_kill()

   Functions Related to IDs
       POSIX			     Solaris
       pthread_self()		     thr_self()
       pthread_equal()		     -
       -			     thr_main()

   Functions Related to Scheduling
       POSIX			     Solaris
       -			     thr_yield()
       -			     thr_suspend()
       -			     thr_continue()
       pthread_setconcurrency()	     thr_setconcurrency()
       pthread_getconcurrency()	     thr_getconcurrency()
       pthread_setschedparam()	     thr_setprio()
       pthread_getschedparam()	     thr_getprio()

   Functions Related to Cancellation
       POSIX			     Solaris
       pthread_cancel()		     -
       pthread_setcancelstate()	     -
       pthread_setcanceltype()	     -
       pthread_testcancel()	     -

       pthread_cleanup_pop()	     -
       pthread_cleanup_push()	     -

   Functions Related to Mutexes
       POSIX					Solaris
       pthread_mutex_init()			mutex_init()
       pthread_mutexattr_init()			-
       pthread_mutexattr_setpshared()		-
       pthread_mutexattr_getpshared()		-
       pthread_mutexattr_setprotocol()		-
       pthread_mutexattr_getprotocol()		-
       pthread_mutexattr_setprioceiling()	-
       pthread_mutexattr_getprioceiling()	-
       pthread_mutexattr_settype()		-
       pthread_mutexattr_gettype()		-
       pthread_mutexattr_setrobust_np()		-
       pthread_mutexattr_getrobust_np()		-
       pthread_mutexattr_destroy()		-
       pthread_mutex_setprioceiling()		-
       pthread_mutex_getprioceiling()		-
       pthread_mutex_lock()			mutex_lock()
       pthread_mutex_trylock()			mutex_trylock()
       pthread_mutex_unlock()			mutex_unlock()
       pthread_mutex_destroy()			mutex_destroy()

   Functions Related to Condition Variables
       POSIX			       Solaris
       pthread_cond_init()	       cond_init()
       pthread_condattr_init()	       -
       pthread_condattr_setpshared()   -
       pthread_condattr_getpshared()   -
       pthread_condattr_destroy()      -
       pthread_cond_wait()	       cond_wait()
       pthread_cond_timedwait()	       cond_timedwait()
       pthread_cond_signal()	       cond_signal()
       pthread_cond_broadcast()	       cond_broadcast()
       pthread_cond_destroy()	       cond_destroy()

   Functions Related to Reader/Writer Locking
       POSIX				 Solaris
       pthread_rwlock_init()		 rwlock_init()
       pthread_rwlock_rdlock()		 rw_rdlock()
       pthread_rwlock_tryrdlock()	 rw_tryrdlock()
       pthread_rwlock_wrlock()		 rw_wrlock()
       pthread_rwlock_trywrlock()	 rw_trywrlock()
       pthread_rwlock_unlock()		 rw_unlock()
       pthread_rwlock_destroy()		 rwlock_destroy()
       pthread_rwlockattr_init()	 -
       pthread_rwlockattr_destroy()	 -
       pthread_rwlockattr_getpshared()	 -
       pthread_rwlockattr_setpshared()	 -

   Functions Related to Semaphores
       POSIX			     Solaris
       sem_init()		     sema_init()
       sem_open()		     -
       sem_close()		     -
       sem_wait()		     sema_wait()
       sem_trywait()		     sema_trywait()
       sem_post()		     sema_post()
       sem_getvalue()		     -
       sem_unlink()		     -
       sem_destroy()		     sema_destroy()

   Functions Related to fork() Clean Up
       POSIX			     Solaris
       pthread_atfork()		     -

   Functions Related to Limits
       POSIX			     Solaris
       pthread_once()		     -

   Functions Related to Debugging
       POSIX			     Solaris
       -			     thr_stksegment()

LOCKING
   Synchronization
       Multithreaded  behavior	is asynchronous, and therefore,	 optimized for
       concurrent and parallel processing. As threads, always from within  the
       same  process and  sometimes from multiple processes, share global data
       with each other, they are not guaranteed exclusive access to the shared
       data at any point in time. Securing mutually exclusive access to shared
       data requires   synchronization	among  the  threads.  Both  POSIX  and
       Solaris	implement  four synchronization mechanisms: mutexes, condition
       variables, reader/writer locking	 (optimized frequent-read  occasional-
       write mutex), and semaphores.

       Synchronizing   multiple	 threads  diminishes  their  concurrency.  The
       coarser the grain of synchronization, that is, the larger the block  of
       code that is locked, the lesser the concurrency.

   MT fork()
       If a threads program calls fork(2), it implicitly calls fork1(2), which
       replicates only the calling thread. Should  there  be  any  outstanding
       mutexes	 throughout   the   process,   the   application  should  call
       pthread_atfork(3C) to wait for and acquire those mutexes prior to call‐
       ing fork().

SCHEDULING
   POSIX
       Scheduling  allocation  size per thread is greater than one. POSIX sup‐
       ports the following three scheduling policies:

       SCHED_OTHER    Timesharing (TS) scheduling policy. It is based  on  the
		      timesharing scheduling class.

       SCHED_FIFO     First-In-First-Out  (FIFO)  scheduling  policy.  Threads
		      scheduled to this policy, if not pre-empted by a	higher
		      priority,	 will  proceed	until completion. Such threads
		      are in real-time	(RT)  scheduling  class.  The  calling
		      process must have a effective user ID of 0.

       SCHED_RR	      Round-Robin scheduling policy. Threads scheduled to this
		      policy, if not pre-empted by  a  higher  priority,  will
		      execute for a time period determined by the system. Such
		      threads are in real-time (RT) scheduling class  and  the
		      calling process must have a effective user ID of 0.

   Solaris
       Only  scheduling policy supported is SCHED_OTHER, which is timesharing,
       based on the TS scheduling class.

ERRORS
       In a multithreaded application, EINTR can  be  returned	from  blocking
       system calls when another thread calls  forkall(2).

USAGE
   -mt compiler option
       The  -mt	 compiler option compiles and links for multithreaded code. It
       compiles source files with −D_REENTRANT and augments the set of support
       libraries properly.

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌─────────────────────────────┬─────────────────────────────┐
       │      ATTRIBUTE TYPE	     │	    ATTRIBUTE VALUE	   │
       ├─────────────────────────────┼─────────────────────────────┤
       │MT-Level		     │MT-Safe, Fork 1-Safe	   │
       └─────────────────────────────┴─────────────────────────────┘

SEE ALSO
       crle(1),	  fork(2),   libpthread(3LIB),	librt(3LIB),  libthread(3LIB),
       pthread_atfork(3C), pthread_create(3C), attributes(5), standards(5)

SunOS 5.10			  11 Aug 2006			    threads(5)
[top]

List of man pages available for SunOS

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