home *** CD-ROM | disk | FTP | other *** search
/ Game Programming - All in One (3rd Edition) / game_prog_all_in_one_3rd_ed.iso / pthread / docs / ANNOUNCE next >
Encoding:
Text File  |  2003-09-18  |  12.8 KB  |  444 lines

  1.          PTHREADS-WIN32 SNAPSHOT 2003-09-18
  2.          ----------------------------------
  3.      Web Site: http://sources.redhat.com/pthreads-win32/
  4.     FTP Site: ftp://sources.redhat.com/pub/pthreads-win32
  5.      Maintainer: Ross Johnson <rpj@ise.canberra.edu.au>
  6.  
  7.  
  8. We are pleased to announce the availability of a new snapshot of
  9. Pthreads-win32, an Open Source Software implementation of the
  10. Threads component of the POSIX 1003.1 2001 Standard for Microsoft's
  11. Win32 environment. Some functions from other sections of POSIX
  12. 1003.1 2001 are also supported including semaphores and scheduling
  13. functions.
  14.  
  15. Some common non-portable functions are also implemented for
  16. additional compatibility, as are a few functions specific
  17. to pthreads-win32 for easier integration with Win32 applications.
  18.  
  19. Pthreads-win32 is free software, distributed under the GNU Lesser
  20. General Public License (LGPL).
  21.  
  22.  
  23. Acknowledgements
  24. ----------------
  25. This library is based substantially on a Win32 pthreads
  26. implementation contributed by John Bossom <John.Bossom@cognos.com>.
  27.  
  28. The implementation of Condition Variables uses algorithms developed
  29. by Alexander Terekhov and Louis Thomas.
  30.  
  31. The implementation of POSIX mutexes has been improved by Thomas Pfaff.
  32.  
  33. The implementation of Spinlocks and Barriers was contributed
  34. by Ross Johnson.
  35.  
  36. The implementation of read/write locks was contributed by
  37. Aurelio Medina and improved by Alexander Terekhov.
  38.  
  39. Many others have contributed significant time and effort to solve crutial
  40. problems in order to make the library workable, robust and reliable.
  41.  
  42. There is also a separate CONTRIBUTORS file. This file and others are
  43. on the web site:
  44.  
  45.     http://sources.redhat.com/pthreads-win32
  46.  
  47. As much as possible, the ChangeLog file acknowledges contributions to the
  48. code base in more detail.
  49.  
  50.  
  51. Changes since the last snapshot
  52. -------------------------------
  53. These are now documented in the NEWS file.
  54. See the ChangeLog file also.
  55.  
  56.  
  57. Known Bugs
  58. ----------
  59. These are now documented in the BUGS file.
  60.  
  61.  
  62. Level of standards conformance
  63. ------------------------------
  64.  
  65. The following POSIX 1003.1 2001 options are defined:
  66.  
  67.       _POSIX_THREADS
  68.       _POSIX_THREAD_SAFE_FUNCTIONS
  69.       _POSIX_THREAD_ATTR_STACKSIZE
  70.       _POSIX_SEM_VALUE_MAX
  71.       _POSIX_SEM_NSEMS_MAX
  72.       _POSIX_THREAD_PRIORITY_SCHEDULING
  73.       _POSIX_SEMAPHORES
  74.       _POSIX_READER_WRITER_LOCKS
  75.       _POSIX_SPIN_LOCKS
  76.       _POSIX_BARRIERS
  77.  
  78.  
  79. The following POSIX 1003.1 2001 options are not defined:
  80.  
  81.       _POSIX_THREAD_ATTR_STACKADDR
  82.       _POSIX_THREAD_PRIO_INHERIT
  83.       _POSIX_THREAD_PRIO_PROTECT
  84.       _POSIX_THREAD_PROCESS_SHARED
  85.  
  86.  
  87. The following functions are implemented:
  88.  
  89.       ---------------------------
  90.       PThreads
  91.       ---------------------------
  92.       pthread_attr_init
  93.       pthread_attr_destroy
  94.       pthread_attr_getdetachstate
  95.       pthread_attr_getstackaddr
  96.       pthread_attr_getstacksize
  97.       pthread_attr_setdetachstate
  98.       pthread_attr_setstackaddr
  99.       pthread_attr_setstacksize
  100.  
  101.       pthread_create
  102.       pthread_detach
  103.       pthread_equal
  104.       pthread_exit
  105.       pthread_join
  106.       pthread_once
  107.       pthread_self
  108.  
  109.       pthread_cancel
  110.       pthread_cleanup_pop
  111.       pthread_cleanup_push
  112.       pthread_setcancelstate
  113.       pthread_setcanceltype
  114.       pthread_testcancel
  115.  
  116.       ---------------------------
  117.       Thread Specific Data
  118.       ---------------------------
  119.       pthread_key_create
  120.       pthread_key_delete
  121.       pthread_setspecific
  122.       pthread_getspecific
  123.  
  124.       ---------------------------
  125.       Mutexes
  126.       ---------------------------
  127.       pthread_mutexattr_init
  128.       pthread_mutexattr_destroy
  129.       pthread_mutexattr_getpshared
  130.       pthread_mutexattr_setpshared
  131.       pthread_mutexattr_gettype
  132.       pthread_mutexattr_settype (types: PTHREAD_MUTEX_DEFAULT
  133.                     PTHREAD_MUTEX_NORMAL
  134.                     PTHREAD_MUTEX_ERRORCHECK
  135.                     PTHREAD_MUTEX_RECURSIVE  )
  136.       pthread_mutex_init
  137.       pthread_mutex_destroy
  138.       pthread_mutex_lock
  139.       pthread_mutex_trylock
  140.       pthread_mutex_timedlock
  141.       pthread_mutex_unlock
  142.  
  143.       ---------------------------
  144.       Condition Variables
  145.       ---------------------------
  146.       pthread_condattr_init
  147.       pthread_condattr_destroy
  148.       pthread_condattr_getpshared
  149.       pthread_condattr_setpshared
  150.  
  151.       pthread_cond_init
  152.       pthread_cond_destroy
  153.       pthread_cond_wait
  154.       pthread_cond_timedwait
  155.       pthread_cond_signal
  156.       pthread_cond_broadcast
  157.  
  158.       ---------------------------
  159.       Read/Write Locks
  160.       ---------------------------
  161.       pthread_rwlock_init
  162.       pthread_rwlock_destroy
  163.       pthread_rwlock_tryrdlock
  164.       pthread_rwlock_trywrlock
  165.       pthread_rwlock_rdlock
  166.       pthread_rwlock_timedrdlock
  167.       pthread_rwlock_rwlock
  168.       pthread_rwlock_timedwrlock
  169.       pthread_rwlock_unlock
  170.       pthread_rwlockattr_init
  171.       pthread_rwlockattr_destroy
  172.       pthread_rwlockattr_getpshared
  173.       pthread_rwlockattr_setpshared
  174.  
  175.       ---------------------------
  176.       Spin Locks
  177.       ---------------------------
  178.       pthread_spin_init
  179.       pthread_spin_destroy
  180.       pthread_spin_lock
  181.       pthread_spin_unlock
  182.       pthread_spin_trylock
  183.  
  184.       ---------------------------
  185.       Barriers
  186.       ---------------------------
  187.       pthread_barrier_init
  188.       pthread_barrier_destroy
  189.       pthread_barrier_wait
  190.       pthread_barrierattr_init
  191.       pthread_barrierattr_destroy
  192.       pthread_barrierattr_getpshared
  193.       pthread_barrierattr_setpshared
  194.  
  195.       ---------------------------
  196.       Semaphores
  197.       ---------------------------
  198.       sem_init
  199.       sem_destroy
  200.       sem_post
  201.       sem_wait
  202.       sem_trywait
  203.       sem_timedwait
  204.       sem_open             (returns an error ENOSYS)
  205.       sem_close          (returns an error ENOSYS)
  206.       sem_unlink         (returns an error ENOSYS)
  207.       sem_getvalue         (returns an error ENOSYS)
  208.  
  209.       ---------------------------
  210.       RealTime Scheduling
  211.       ---------------------------
  212.       pthread_attr_getschedparam
  213.       pthread_attr_setschedparam
  214.       pthread_attr_getinheritsched
  215.       pthread_attr_setinheritsched
  216.       pthread_attr_getschedpolicy (only supports SCHED_OTHER)
  217.       pthread_attr_setschedpolicy (only supports SCHED_OTHER)
  218.       pthread_getschedparam
  219.       pthread_setschedparam
  220.       pthread_getconcurrency
  221.       pthread_setconcurrency
  222.       pthread_attr_getscope
  223.       pthread_attr_setscope  (only supports PTHREAD_SCOPE_SYSTEM)
  224.       sched_get_priority_max
  225.       sched_get_priority_min
  226.       sched_rr_get_interval  (returns an error ENOTSUP)
  227.       sched_setscheduler     (only supports SCHED_OTHER)
  228.       sched_getscheduler     (only supports SCHED_OTHER)
  229.       sched_yield
  230.  
  231.       ---------------------------
  232.       Signals
  233.       ---------------------------
  234.       pthread_sigmask
  235.       pthread_kill           (only supports zero sig value,
  236.                               for thread validity checking)
  237.  
  238.       ---------------------------
  239.       Non-portable routines (see the README.NONPORTABLE file for usage)
  240.       ---------------------------
  241.       pthread_getw32threadhandle_np
  242.       pthread_timechange_handler_np
  243.       pthread_delay_np
  244.       pthread_mutexattr_getkind_np
  245.       pthread_mutexattr_setkind_np    (types: PTHREAD_MUTEX_FAST_NP,
  246.                         PTHREAD_MUTEX_ERRORCHECK_NP,
  247.                         PTHREAD_MUTEX_RECURSIVE_NP,
  248.                         PTHREAD_MUTEX_ADAPTIVE_NP,
  249.                         PTHREAD_MUTEX_TIMED_NP)
  250.       pthread_num_processors_np
  251.       pthread_win32_process_attach_np    (Required when statically linking the library)
  252.       pthread_win32_process_detach_np    (Required when statically linking the library)
  253.       pthread_win32_thread_attach_np    (Required when statically linking the library)
  254.       pthread_win32_thread_detach_np    (Required when statically linking the library)
  255.  
  256.       ---------------------------
  257.       Static Initializers
  258.       ---------------------------
  259.       PTHREAD_ONCE_INIT
  260.       PTHREAD_MUTEX_INITIALIZER
  261.       PTHREAD_COND_INITIALIZER
  262.       PTHREAD_RWLOCK_INITIALIZER
  263.       PTHREAD_SPINLOCK_INITIALIZER
  264.  
  265.       ---------------------------
  266.       Thread-Safe C Runtime Library (macros)
  267.       ---------------------------
  268.       strtok_r
  269.       asctime_r
  270.       ctime_r
  271.       gmtime_r
  272.       localtime_r
  273.       rand_r
  274.  
  275.  
  276. The following functions are not implemented:
  277.       
  278.       ---------------------------
  279.       RealTime Scheduling
  280.       ---------------------------
  281.       pthread_mutex_getprioceiling
  282.       pthread_mutex_setprioceiling
  283.       pthread_mutex_attr_getprioceiling
  284.       pthread_mutex_attr_getprotocol
  285.       pthread_mutex_attr_setprioceiling
  286.       pthread_mutex_attr_setprotocol
  287.  
  288.       ---------------------------
  289.       Fork Handlers
  290.       ---------------------------
  291.       pthread_atfork
  292.  
  293.       ---------------------------
  294.       Stdio
  295.       --------------------------- 
  296.       flockfile
  297.       ftrylockfile
  298.       funlockfile
  299.       getc_unlocked
  300.       getchar_unlocked    
  301.       putc_unlocked
  302.       putchar_unlocked
  303.  
  304.       ---------------------------
  305.       Thread-Safe C Runtime Library
  306.       ---------------------------
  307.       readdir_r
  308.       getgrgid_r
  309.       getgrnam_r
  310.       getpwuid_r
  311.       getpwnam_r
  312.       
  313.       ---------------------------
  314.       Signals
  315.       ---------------------------
  316.       sigtimedwait
  317.       sigwait
  318.       sigwaitinfo
  319.       
  320.       
  321. The library includes two non-API functions for creating cancellation
  322. points in applications and libraries:
  323.       
  324.       pthreadCancelableWait
  325.       pthreadCancelableTimedWait
  326.  
  327.       
  328. Availability
  329. ------------ 
  330.  
  331. The prebuilt DLL, export libs (for both MSVC and Mingw32), and the header
  332. files (pthread.h, semaphore.h, sched.h) are available along with the
  333. complete source code.
  334.  
  335. The source code can be found at:
  336.  
  337.     ftp://sources.redhat.com/pub/pthreads-win32
  338.  
  339. and as individual source code files at
  340.  
  341.     ftp://sources.redhat.com/pub/pthreads-win32/source
  342.  
  343. The pre-built DLL, export libraries and include files can be found at:
  344.  
  345.     ftp://sources.redhat.com/pub/pthreads-win32/dll-latest
  346.  
  347.  
  348.       
  349. Mailing List 
  350. ------------  
  351.       
  352. There is a mailing list for discussing pthreads on Win32. To join,
  353. send email to:
  354.  
  355.     pthreads-win32-subscribe@sourceware.cygnus.com
  356.       
  357.  
  358. Application Development Environments
  359. ------------------------------------
  360.  
  361. See the README file for more information.
  362.       
  363. MSVC:
  364. MSVC using SEH works. Distribute pthreadVSE.dll with your application.
  365. MSVC using C++ EH works. Distribute pthreadVCE.dll with your application.
  366. MSVC using C setjmp/longjmp works. Distribute pthreadVC.dll with your application.
  367.  
  368.  
  369. Mingw32:
  370. See the FAQ, Questions 6 and 10.
  371.  
  372. Mingw using C++ EH works. Distribute pthreadGCE.dll with your application.
  373. Mingw using C setjmp/longjmp works. Distribute pthreadGC.dll with your application.
  374.  
  375.  
  376. Cygwin: (http://sourceware.cygnus.com/cygwin/)
  377. Developers using Cygwin will not need pthreads-win32 since it has POSIX threads
  378. support. Refer to its documentation for details and extent.
  379.  
  380.  
  381. UWIN:
  382. UWIN is a complete Unix-like environment for Windows from AT&T. Pthreads-win32
  383. doesn't currently support UWIN (and vice versa), but that may change in the
  384. future.
  385.  
  386. Generally:
  387. For convenience, the following pre-built files are available on the FTP site
  388. (see Availability above):
  389.  
  390.     pthread.h    - for POSIX 1c threads
  391.     semaphore.h    - for POSIX 1b semaphores
  392.     sched.h     - for POSIX 1b scheduling
  393.     pthreadVCE.dll    - built with MSVC++ compiler using C++ EH
  394.     pthreadVCE.lib
  395.     pthreadVC.dll    - built with MSVC compiler using C setjmp/longjmp
  396.     pthreadVC.lib
  397.     pthreadVSE.dll    - built with MSVC compiler using SEH
  398.     pthreadVSE.lib
  399.     pthreadGCE.dll    - built with Mingw32 G++ 2.95.2-1
  400.     pthreadGC.dll    - built with Mingw32 GCC 2.95.2-1 using setjmp/longjmp
  401.     libpthreadGCE.a - derived from pthreadGCE.dll
  402.     libpthreadGC.a    - derived from pthreadGC.dll
  403.     gcc.dll     - needed if distributing applications that use
  404.               pthreadGCE.dll (but see the FAQ Q 10 for the latest
  405.               related information)
  406.  
  407. These are the only files you need in order to build POSIX threads
  408. applications for Win32 using either MSVC or Mingw32.
  409.  
  410. See the FAQ file in the source tree for additional information.
  411.  
  412.  
  413. Documentation
  414. -------------
  415.  
  416. For the authoritative reference, see the online POSIX
  417. standard reference:
  418.  
  419.        http://www.UNIX-systems.org/version3/ieee_std.html
  420.  
  421. For POSIX Thread API programming, several reference books are
  422. available:
  423.  
  424.        Programming with POSIX Threads
  425.        David R. Butenhof
  426.        Addison-Wesley (pub)
  427.  
  428.        Pthreads Programming
  429.        By Bradford Nichols, Dick Buttlar & Jacqueline Proulx Farrell
  430.        O'Reilly (pub)
  431.  
  432. On the web: see the links at the bottom of the pthreads-win32 site:
  433.  
  434.        http://sources.redhat.com/pthreads-win32/
  435.  
  436.        Currently, there is no documentation included in the package apart
  437.        from the copious comments in the source code.
  438.  
  439.  
  440.  
  441. Enjoy!
  442.  
  443. Ross Johnson
  444.