⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 news

📁 windows多线程开发包
💻
📖 第 1 页 / 共 3 页
字号:
snapshot-2004-11-03).
- Konstantin Voronkov  <beowinkle at yahoo.com>


SNAPSHOT 2004-11-22
-------------------
Version 1.0.0

This snapshot primarily fixes the condvar bug introduced in
snapshot-2004-11-03. DLL versioning has also been included to allow
applications to runtime check the Microsoft compatible DLL version
information, and to extend the DLL naming system for ABI and major
(non-backward compatible) API changes. See the README file for details.

Bug fixes
---------

* Condition variables no longer deadlock (bug introduced in
snapshot-2004-11-03).
- Alexander Kotliarov and Nicolas at saintmac

* DLL naming extended to avoid 'DLL hell' in the future, and to
accommodate the ABI change introduced in snapshot-2004-11-03. Snapshot
2004-11-03 will be removed from FTP sites.

New features
------------

* A Microsoft-style version resource has been added to the DLL for
applications that wish to check DLL compatibility at runtime.

* Pthreads-win32 DLL naming has been extended to allow incompatible DLL
versions to co-exist in the same filesystem. See the README file for details,
but briefly: while the version information inside the DLL will change with
each release from now on, the DLL version names will only change if the new
DLL is not backward compatible with older applications.

The versioning scheme has been borrowed from GNU Libtool, and the DLL
naming scheme is from Cygwin. Provided the Libtool-style numbering rules are
honoured, the Cygwin DLL naming scheme automatcally ensures that DLL name
changes are minimal and that applications will not load an incompatible
pthreads-win32 DLL.

Those who use the pre-built DLLs will find that the DLL/LIB names have a new
suffix (1) in this snapshot. E.g. pthreadVC1.dll etc.

* The POSIX thread ID reuse uniqueness feature introduced in the last snapshot
has been kept as default, but the behaviour can now be controlled when the DLL
is built to effectively switch it off. This makes the library much more
sensitive to applications that assume that POSIX thread IDs are unique, i.e.
are not strictly compliant with POSIX. See the PTW32_THREAD_ID_REUSE_INCREMENT
macro comments in config.h for details.

Other changes
-------------
Certain POSIX macros have changed.

These changes are intended to conform to the Single Unix Specification version 3,
which states that, if set to 0 (zero) or not defined, then applications may use
sysconf() to determine their values at runtime. Pthreads-win32 does not
implement sysconf().

The following macros are no longer undefined, but defined and set to -1
(not implemented):

      _POSIX_THREAD_ATTR_STACKADDR
      _POSIX_THREAD_PRIO_INHERIT
      _POSIX_THREAD_PRIO_PROTECT
      _POSIX_THREAD_PROCESS_SHARED

The following macros are defined and set to 200112L (implemented):

      _POSIX_THREADS
      _POSIX_THREAD_SAFE_FUNCTIONS
      _POSIX_THREAD_ATTR_STACKSIZE
      _POSIX_THREAD_PRIORITY_SCHEDULING
      _POSIX_SEMAPHORES
      _POSIX_READER_WRITER_LOCKS
      _POSIX_SPIN_LOCKS
      _POSIX_BARRIERS

The following macros are defined and set to appropriate values:

      _POSIX_THREAD_THREADS_MAX
      _POSIX_SEM_VALUE_MAX
      _POSIX_SEM_NSEMS_MAX
      PTHREAD_DESTRUCTOR_ITERATIONS
      PTHREAD_KEYS_MAX
      PTHREAD_STACK_MIN
      PTHREAD_THREADS_MAX


SNAPSHOT 2004-11-03
-------------------

DLLs produced from this snapshot cannot be used with older applications without
recompiling the application, due to a change to pthread_t to provide unique POSIX
thread IDs.

Although this snapshot passes the extended test suite, many of the changes are
fairly major, and some applications may show different behaviour than previously,
so adopt with care. Hopefully, any changed behaviour will be due to the library
being better at it's job, not worse.

Bug fixes
---------

* pthread_create() no longer accepts NULL as the thread reference arg.
A segfault (memory access fault) will result, and no thread will be
created.

* pthread_barrier_wait() no longer acts as a cancelation point.

* Fix potential race condition in pthread_once()
- Tristan Savatier  <tristan at mpegtv.com>

* Changes to pthread_cond_destroy() exposed some coding weaknesses in several
test suite mini-apps because pthread_cond_destroy() now returns EBUSY if the CV
is still in use.

New features
------------

* Added for compatibility:
PTHREAD_RECURSIVE_MUTEX_INITIALIZER,
PTHREAD_ERRORCHECK_MUTEX_INITIALIZER,
PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP

* Initial support for Digital Mars compiler
- Anuj Goyal  <anuj.goyal at gmail.com>

* Faster Mutexes. These have been been rewritten following a model provided by
Alexander Terekhov that reduces kernel space checks, and eliminates some additional
critical sections used to manage a race between timedlock expiration and unlock.
Please be aware that the new mutexes do not enforce strict absolute FIFO scheduling
of mutexes, however any out-of-order lock acquisition should be very rare.

* Faster semaphores. Following a similar model to mutexes above, these have been
rewritten to use preliminary users space checks.

* sem_getvalue() now returns the number of waiters.

* The POSIX thread ID now has much stronger uniqueness characteristics. The library
garrantees not to reuse the same thread ID for at least 2^(wordsize) thread
destruction/creation cycles.

New tests
---------

* semaphore4.c: Tests cancelation of the new sem_wait().

* semaphore4t.c: Likewise for sem_timedwait().

* rwlock8.c: Tests and times the slow execution paths of r/w locks, and the CVs,
mutexes, and semaphores that they're built on.


SNAPSHOT 2004-05-16
-------------------

Attempt to add Watcom to the list of compilers that can build the library.
This failed in the end due to it's non-thread-aware errno. The library
builds but the test suite fails. See README.Watcom for more details.

Bug fixes
---------
* Bug and memory leak in sem_init()
- Alex Blanco  <Alex.Blanco at motorola.com>

* ptw32_getprocessors() now returns CPU count of 1 for WinCE.
- James Ewing  <james.ewing at sveasoft.com>

* pthread_cond_wait() could be canceled at a point where it should not
be cancelable. Fixed.
- Alexander Terekhov  <TEREKHOV at de.ibm.com>

* sem_timedwait() had an incorrect timeout calculation.
- Philippe Di Cristo  <philipped at voicebox.com>

* Fix a memory leak left behind after threads are destroyed.
- P. van Bruggen  <pietvb at newbridges.nl>

New features
------------
* Ported to AMD64.
- Makoto Kato  <raven at oldskool.jp>

* True pre-emptive asynchronous cancelation of threads. This is optional
and requires that Panagiotis E. Hadjidoukas's QueueUserAPCEx package be
installed. This package is included in the pthreads-win32 self-unpacking
Zip archive starting from this snapshot. See the README.txt file inside
the package for installation details.

Note: If you don't use async cancelation in your application, or don't need
to cancel threads that are blocked on system resources such as network I/O,
then the default non-preemptive async cancelation is probably good enough.
However, pthreads-win32 auto-detects the availability of these components
at run-time, so you don't need to rebuild the library from source if you
change your mind later.

All of the advice available in books and elsewhere on the undesirability
of using async cancelation in any application still stands, but this
feature is a welcome addition with respect to the library's conformance to
the POSIX standard.

SNAPSHOT 2003-09-18
-------------------

Cleanup of thread priority management. In particular, setting of thread
priority now attempts to map invalid Win32 values within the range returned
by sched_get_priority_min/max() to useful values. See README.NONPORTABLE
under "Thread priority".

Bug fixes
---------
* pthread_getschedparam() now returns the priority given by the most recent
call to pthread_setschedparam() or established by pthread_create(), as
required by the standard. Previously, pthread_getschedparam() incorrectly
returned the running thread priority at the time of the call, which may have
been adjusted or temporarily promoted/demoted.

* sched_get_priority_min() and sched_get_priority_max() now return -1 on error
and set errno. Previously, they incorrectly returned the error value directly.


SNAPSHOT 2003-09-04
-------------------

Bug fixes
---------
* ptw32_cancelableWait() now allows cancelation of waiting implicit POSIX
threads.

New test
--------
* cancel8.c tests cancelation of Win32 threads waiting at a POSIX cancelation
point.


SNAPSHOT 2003-09-03
-------------------

Bug fixes
---------
* pthread_self() would free the newly created implicit POSIX thread handle if
DuplicateHandle failed instead of recycle it (very unlikely).

* pthread_exit() was neither freeing nor recycling the POSIX thread struct
for implicit POSIX threads.

New feature - Cancelation of/by Win32 (non-POSIX) threads
---------------------------------------------------------
Since John Bossom's original implementation, the library has allowed non-POSIX
initialised threads (Win32 threads) to call pthreads-win32 routines and
therefore interact with POSIX threads. This is done by creating an on-the-fly
POSIX thread ID for the Win32 thread that, once created, allows fully
reciprical interaction. This did not extend to thread cancelation (async or
deferred). Now it does.

Any thread can be canceled by any other thread (Win32 or POSIX) if the former
thread's POSIX pthread_t value is known. It's TSD destructors and POSIX
cleanup handlers will be run before the thread exits with an exit code of
PTHREAD_CANCELED (retrieved with GetExitCodeThread()).

This allows a Win32 thread to, for example, call POSIX CV routines in the same way
that POSIX threads would/should, with pthread_cond_wait() cancelability and
cleanup handlers (pthread_cond_wait() is a POSIX cancelation point).

By adding cancelation, Win32 threads should now be able to call all POSIX
threads routines that make sense including semaphores, mutexes, condition
variables, read/write locks, barriers, spinlocks, tsd, cleanup push/pop,
cancelation, pthread_exit, scheduling, etc.

Note that these on-the-fly 'implicit' POSIX thread IDs are initialised as detached
(not joinable) with deferred cancelation type. The POSIX thread ID will be created
automatically by any POSIX routines that need a POSIX handle (unless the routine
needs a pthread_t as a parameter of course). A Win32 thread can discover it's own
POSIX thread ID by calling pthread_self(), which will create the handle if
necessary and return the pthread_t value.

New tests
---------
Test the above new feature.


SNAPSHOT 2003-08-19
-------------------

This snapshot fixes some accidental corruption to new test case sources.
There are no changes to the library source code.


SNAPSHOT 2003-08-15
-------------------

Bug fixes
---------

* pthread.dsp now uses correct compile flags (/MD).
- Viv  <vcotirlea@hotmail.com>

* pthread_win32_process_detach_np() fixed memory leak.
- Steven Reddie  <Steven.Reddie@ca.com>

* pthread_mutex_destroy() fixed incorrect return code.
- Nicolas Barry  <boozai@yahoo.com>

* pthread_spin_destroy() fixed memory leak.
- Piet van Bruggen  <pietvb@newbridges.nl>

* Various changes to tighten arg checking, and to work with later versions of
MinGW32 and MsysDTK.

* pthread_getschedparam() etc, fixed dangerous thread validity checking.
- Nicolas Barry  <boozai@yahoo.com>

* POSIX thread handles are now reused and their memory is not freed on thread exit.
This allows for stronger thread validity checking.

New standard routine
--------------------

* pthread_kill() added to provide thread validity checking to applications.
It does not accept any non zero values for the signal arg.

New test cases
--------------

* New test cases to confirm validity checking, pthread_kill(), and thread reuse.


SNAPSHOT 2003-05-10
-------------------

Bug fixes
---------

* pthread_mutex_trylock() now returns correct error values.
pthread_mutex_destroy() will no longer destroy a recursively locked mutex.
pthread_mutex_lock() is no longer inadvertantly behaving as a cancelation point.
- Thomas Pfaff  <tpfaff@gmx.net>

* pthread_mutex_timedlock() no longer occasionally sets incorrect mutex
ownership, causing deadlocks in some applications.
- Robert Strycek <strycek@posam.sk> and Alexander Terekhov  <TEREKHOV@de.ibm.com>


SNAPSHOT 2002-11-04
-------------------

Bug fixes
---------

* sem_getvalue() now returns the correct value under Win NT and WinCE.
- Rob Fanner  <rfanner@stonethree.com>

* sem_timedwait() now uses tighter checks for unreasonable
abstime values - that would result in unexpected timeout values.

* ptw32_cond_wait_cleanup() no longer mysteriously consumes
CV signals but may produce more spurious wakeups. It is believed
that the sem_timedwait() call is consuming a CV signal that it
shouldn't.
- Alexander Terekhov  <TEREKHOV@de.ibm.com>

* Fixed a memory leak in ptw32_threadDestroy() for implicit threads.

* Fixed potential for deadlock in pthread_cond_destroy().
A deadlock could occur for statically declared CVs (PTHREAD_COND_INITIALIZER),
when one thread is attempting to destroy the condition variable while another

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -