Tizen 2.1 base
[platform/upstream/gcd.git] / pthread_workqueue-0.8.2 / ChangeLog
1 Version 0.8.2 r195
2 released 7/16/2011
3 ---
4
5  * Use LDADD instead of LDFLAGS (fixes Debian bug #631674)
6  * Make the "idle" test optional as it does not work on 32-bit Linux
7  * Use time_t for PWQ_SPIN_USEC to fix a build problem on 32-bit Linux
8
9 Version 0.8.1 r?
10 released 7/16/2011
11 ---
12
13  * Uploaded to Debian, but not generally released.
14
15 Version 0.8 r190
16 released 7/08/2011
17 ---
18
19  * Remove the 'struct worker' datatype and related housekeeping chores.
20
21  * Fix incorrect usage of pthread_cond_timedwait() for overcommit threads. 
22
23  * Various improvements and bug fixes for the Windows port.
24
25  * Prevent a race condition that could cause a use-after-free if a witem
26    were freed before manager_workqueue_additem() returned.
27
28  * Prevent races involving the scoreboard variables.
29
30  * Fix a lost wakeup bug when calling worker_stop().
31
32  * Finally fixed the long standing TODO and removed the global lock for pwq enqueue/dequeue.
33
34  * Only signal wakeups for the pool if there are idle threads available to process data. 
35
36  * Use atomics for updating the mask with pending workqueues as the global lock was removed.
37
38  * Added optional idle thread spinning by using the PWQ_SPIN_USEC and PWQ_SPIN_THREADS environment variables. The accrued changes decrease latency from 7-8 microseconds to ~1 +- 0.5 microsecond depending on spin configuration. By default, no spinning will be done.
39
40  * Renamed USE_RT_THREADS to PWQ_RT_THREADS for consistency. 
41
42  * Allow specification of number of CPU:s by using the environment variable PWQ_ACTIVE_CPU - this is useful when using e.g. processor sets (fewer CPU:s are truly available to the process than is physically available in the machine). Proper auto-detection of this would be even nicer in the future, but investigation for the various platforms is required - this environment variable allows for a simple workaround in the meantime.
43
44 Version 0.7.1 r157
45 released 7/02/2011
46 ---
47
48  * Fix a memory leak in worker_overcommit_main() when reaping idle threads.
49
50 Version 0.7 r150
51 released 6/13/2011
52 ---
53
54  * Replace pthread emulation macros with winpthreads.h from 
55    http://locklessinc.com/articles/pthreads_on_windows/
56  
57  * Fix witem_cache test to link on solaris also
58
59  * Avoid possible overrun of priority level
60
61  * Fixed possible deadlock.
62
63  * Cleaned up witem cache interface and usage for easier reading of code.
64
65  * Link with libumem on Solaris
66
67  * Add -Wextra to CFLAGS and fix the related warnings
68
69  * Implement the workqueue overcommit attribute.
70    Make wqlist an array instead of an array of lists.
71    Change wqlist_scan() to be more efficient.
72
73 Version 0.6 r134
74 released 5/16/2011
75 ---
76
77  * Add a pthread_atfork() handler to reinitialize the library after fork().
78
79  * Defer the manager thread creation until pthread_workqueue_create_np().
80
81 Version 0.5.1 r125
82 released 5/7/2011
83 ---
84
85  * Fix the testing/latency Makefile to work on 32-bit Linux.
86  * Remove unused variables from testing/latency.c
87
88 Version 0.5 r120
89 released 5/6/2011
90 ---
91
92  * Add CMakeLists.txt for building under CMake.
93
94  * Support building on Windows under MinGW and MSVC.
95
96  * Fixed a deadlock during startup. We could actually raise and get a lost wakeup of the pthread_cond_wait  in manager_init() as the manager already managed to signal before we went to sleep. (happened around 1/1000 of startups on a large multicore).
97
98  * Finetune ramp-up logic when system is under heavy load - allow up to worker_idle_threshold threads regardless of system load, otherwise limit thread creation when system is under NCPU:s load rather than 2*NCPU:s (it is way too late to limit it on a larger multicore machine...).
99
100  * Create a witem_cache_init() function so that the TLS key can be made private to witem_cache.o
101
102  * Fix compilation on 32-bit Linux (Credit: Marius Zwicker)
103
104  * Don't reset the signal mask, it should be blocked for the manager thread (and any subsequently started threads) as well
105
106  * Enabled experimental support for real-time threads scheduling class on Solaris, specify PWQ_RT_THREADS to enable it. Be careful when using, may take all available resources unless used in combination with processor sets, thus effectivively hanging the machine
107
108  * Add option for static library build activated by defining MAKE_STATIC
109
110  * Enable debugging on windows by an environment variable as well
111
112 Version 0.4.1 r99
113 released 3/13/2011
114 ---
115
116  * Add -lpthread to LDFLAGS
117
118 Version 0.4 r97
119 released 3/12/2011
120 ---
121
122  * Improved printf debugging; to use it, define the environment variable "PWQ_DEBUG=yes"
123
124  * New function threads_runnable() determines how many LWPs are on the run queue and uses
125    this information to improve the thread pool management heuristic.
126
127  * All ELF symbols are now hidden by default, and only the public API symbols are visible.
128
129  * Improved workqueue ramp-up and ramp-down behavior.
130
131 Version 0.3 r81
132 released 3/6/2011
133 ---
134
135  * Fix DESTDIR support in the 'make install' target.
136
137 Version 0.2 r77
138 released 3/6/2011
139 ---
140
141  * Add support for FreeBSD, Solaris, and Microsoft Windows
142
143  * Fix a race condition that would cause deadlock in rare cases when either:
144      1) pthread_cond_signal() was called while no other threads were 
145         blocked a call to pthread_cond_wait(), or
146      2) pthread_cond_signal() was called multiple times before the any thread
147         blocking in a call to pthread_cond_wait() was awoken by the scheduler.
148
149    The fix is to ensure that the call to pthread_cond_signal() occurs while
150    the calling thread holds the same mutex used by the threads that call
151    pthread_cond_wait().
152
153    Credit to Joakim Johansson for finding the bug and providing a patch.
154
155 Version 0.1 r?
156 released 6/13/2010   
157 ---
158
159   * Initial release for Debian as a patch applied to libdispatch. There 
160     was no tarball released for this version.