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)

       threads, pthreads - POSIX pthreads and Solaris threads concepts

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

       #include <pthread.h>

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

       #include <sched.h>

       #include <thread.h>

       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.

       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.

       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)

	   o	  Solaris threads can be suspended and continued.

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

       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()

       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().

   POSIX Threads
       Solaris supports the following three POSIX scheduling policies:

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

		      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.

		      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:

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

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

		    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.

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

   -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.

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

       │MT-Level       │ MT-Safe, Fork 1-Safe │

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

       Linker and Libraries Guide

				 Nov 11, 2008			    THREADS(5)

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]
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