threads man page on SmartOS

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

THREADS(5)							    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_setschedprio()	  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()	    -
       pthread_mutexattr_getrobust()	    -
       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 vari‐
       ables, 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 Threads
       Solaris supports the following three POSIX scheduling policies:

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

       SCHED_FIFO
		      First-In-First-Out scheduling policy. Threads  scheduled
		      to  this	policy, if not preempted 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 preempted by a higher priority, will exe‐
		      cute 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.

       In addition to the POSIX-specified scheduling policies  above,  Solaris
       also supports these scheduling policies:

       SCHED_IA
		    Threads  are scheduled according to the Inter-Active Class
		    (IA) policy as described in priocntl(2).

       SCHED_FSS
		    Threads are scheduled according to	the  Fair-Share	 Class
		    (FSS) policy as described in priocntl(2).

       SCHED_FX
		    Threads  are  scheduled  according	to  the Fixed-Priority
		    Class (FX) policy as described in priocntl(2).

   Solaris Threads
       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),   priocntl(2),    libpthread(3LIB),	  librt(3LIB),
       libthread(3LIB), pthread_atfork(3C), pthread_create(3C), attributes(5),
       standards(5)

       Linker and Libraries Guide

				 Nov 11, 2008			    THREADS(5)
[top]

List of man pages available for SmartOS

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