Home Man
Search
Today's Posts
Register

Linux & Unix Commands - Search Man Pages

OpenSolaris 2009.06 - man page for threads (opensolaris section 5)

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 semaphore names, have a "pthread" prefix.  Func-
       tion  names for similar POSIX and Solaris functions have similar endings. Typically, simi-
       lar 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  config-
		  urable 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 com-
       parable	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  par-
       allel processing. As threads, always from within the same process and  sometimes from mul-
       tiple 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 syn-
       chronization, that is, the larger the block of code that is locked, the lesser the concur-
       rency.

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

       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

SunOS 5.11				   11 Nov 2008				       threads(5)


All times are GMT -4. The time now is 06:00 AM.

Unix & Linux Forums Content Copyrightę1993-2018. All Rights Reserved.
UNIX.COM Login
Username:
Password:  
Show Password