this repo has no description
at fixPythonPipStalling 160 lines 5.8 kB view raw
1Version 0.8.2 r195 2released 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 9Version 0.8.1 r? 10released 7/16/2011 11--- 12 13 * Uploaded to Debian, but not generally released. 14 15Version 0.8 r190 16released 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 44Version 0.7.1 r157 45released 7/02/2011 46--- 47 48 * Fix a memory leak in worker_overcommit_main() when reaping idle threads. 49 50Version 0.7 r150 51released 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 73Version 0.6 r134 74released 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 81Version 0.5.1 r125 82released 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 88Version 0.5 r120 89released 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 112Version 0.4.1 r99 113released 3/13/2011 114--- 115 116 * Add -lpthread to LDFLAGS 117 118Version 0.4 r97 119released 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 131Version 0.3 r81 132released 3/6/2011 133--- 134 135 * Fix DESTDIR support in the 'make install' target. 136 137Version 0.2 r77 138released 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 155Version 0.1 r? 156released 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.