1 2008-04-11 Zoltan Varga <vargaz@gmail.com>
3 * Thread.cs: Make in_currentculture non-static. Fixes #378892.
5 2008-04-07 Dick Porter <dick@ximian.com>
7 * Thread.cs: Fix throwing of exceptions when manipulating
8 ApartmentState. Fixes part of bug 324338.
10 2008-04-01: Eyal Alaluf <eyala@mainsoft.com>
12 * Thread.cs: Put a NumberFormatter instance as a member of the current
13 thread so it can reused for performint ToString conversions.
15 2008-03-26 Massimiliano Mantione <massi@ximian.com>
16 * Thread.cs: Renamed "unused6" because it will be used to hold
17 the "mono_thread_manage" callback.
19 Tue Feb 26 17:51:58 CET 2008 Paolo Molaro <lupus@ximian.com>
21 * Timer.cs: use a monotonic clock to schedule timers
22 (fixes part of bug#347476).
24 Fri Feb 22 11:23:53 CET 2008 Paolo Molaro <lupus@ximian.com>
26 * Thread.cs: implemented Begin/EndCriticalRegion.
28 2008-02-03 Sebastien Pouliot <sebastien@ximian.com>
30 * WaitHandle.cs: Ifdef out some unused code (found by Gendarme).
32 2008-01-06 Zoltan Varga <vargaz@gmail.com>
34 * Thread.cs (set_CurrentCulture): If the culture is read-only, cache the result
36 (set_CurrentUICulture): Ditto.
38 2008-01-03 Zoltan Varga <vargaz@gmail.com>
40 * Thread.cs (set_CurrentCulture): Avoid the serialization overhead if
41 the new culture is equal to the old one.
43 2007-12-27 Zoltan Varga <vargaz@gmail.com>
45 * Thread.cs: Change the type of synch_cs to an IntPtr to be in synch with the
48 2007-11-20 Atsushi Enomoto <atsushi@ximian.com>
50 * ReaderWriterLock.cs : ... and avoid extra finalizer call.
52 2007-11-20 Atsushi Enomoto <atsushi@ximian.com>
54 * ReaderWriterLock.cs : adding missing 2.0 destructor (does nothing).
56 Thu Nov 8 18:36:25 CET 2007 Paolo Molaro <lupus@ximian.com>
58 * Timer.cs: if period is 0 with a non-infinite due time, we
59 run the callback just once (bug #340212).
61 2007-10-24 Dick Porter <dick@ximian.com>
63 * Thread.cs: Call Thread_init on the new 2.0 constructors too.
65 2007-10-24 Dick Porter <dick@ximian.com>
67 * Thread.cs: Assign the ManagedThreadId when it is asked for,
68 rather than in the constructor, so ThreadPool threads also work.
69 Fixes bug 335579 (and doesn't break 325367 or 325566)
71 2007-10-24 Atsushi Enomoto <atsushi@ximian.com>
73 * SynchronizationContext.cs : removed SendOrPost().
75 Wed Oct 17 13:24:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
77 * Timer.cs: better cleanup test for the expired array.
79 Tue Oct 16 17:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
81 * Timer.cs: remove expired timers from the the jobs list.
83 Tue Oct 16 12:14:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
85 * Timer.cs: rewrote to use threadpool threads to invoke the callbacks,
86 avoid Thread.Abort and Thread.Interrupt and use a single scheduler
87 thread, partially from the patch of Rafael Ferreira in bug #315999.
88 Fixes bug #315999, #332206.
90 2007-10-15 Dick Porter <dick@ximian.com>
92 * Thread.cs: Initialise synch_cs to null now we aren't using it as
95 2007-09-25 Dick Porter <dick@ximian.com>
97 * Thread.cs: Keep ManagedThreadId constant over the lifetime of a
98 Thread. Patch from jlarimer@gmail.com fixing bugs 325367 and
101 2007-09-25 Jonathan Pobst <monkey@jpobst.com>
103 * SynchronizationContext.cs: Implement SetSynchronizationContext.
105 2007-09-06 Dick Porter <dick@ximian.com>
107 * Timer.cs: Only hold a WeakReference to the runner thread, to
108 work around an issue when finalizing at shutdown or (I think)
109 appdomain unload. (Basically, the Thread was being finalized
110 first, but the Timer's finalizer was still trying to reference it
113 2007-08-10 Gert Driesen <drieseng@users.sourceforge.net>
115 * Thread.cs: Throw ThreadStateException when retrieving ApartmentState
116 or IsBackground if thread is stopped. Fixes bug #81658.
118 2007-08-08 Zoltan Varga <vargaz@gmail.com>
120 * Thread.cs: Add a fixme.
122 2007-07-21 Miguel de Icaza <miguel@novell.com>
124 * WaitHandle.cs (Handle): It turns out that we should never create
125 new SafeWaitHandles, as applications will assume that a
126 SafeWaitHandle pulled from this will be the same after a Handle
127 update (from Gert's test):
130 AutoResetEvent are1 = new AutoResetEvent (false);
131 AutoResetEvent are2 = new AutoResetEvent (false);
132 SafeWaitHandle swh1 = are1.SafeWaitHandle;
133 Console.WriteLine ("#A1:" + !swh1.IsClosed);
134 Console.WriteLine ("#A2:" + !swh1.IsInvalid);
135 IntPtr dummyHandle = (IntPtr) 2;
136 are1.Handle = dummyHandle;
137 Console.WriteLine ("#A3:" + (are1.Handle == dummyHandle));
138 Console.WriteLine ("#A4:" + !swh1.IsClosed);
139 Console.WriteLine ("#A5:" + !swh1.IsClosed);
140 Console.WriteLine ("#A6:" + !swh1.IsInvalid);
141 Console.WriteLine ("#A7:" + !are1.SafeWaitHandle.IsClosed);
142 Console.WriteLine ("#A8:" +
143 !are1.SafeWaitHandle.IsInvalid);
145 We would return in A4, A5, A6 true, even when we have set the
150 2007-07-18 Miguel de Icaza <miguel@novell.com>
152 * WaitHandle.cs (Handle): in the 2.0 profile, explicitly dispose
153 the old SafeWaitHandle, do not wait for the finalizer to run;
155 Take ownership of the handle; The docs did not say that
156 assigning to this value would lead to a leak, the docs said that
157 in the 1.0 and 1.1 profiles assigning to this property might lead
158 to a leak. My mistake.
162 2007-07-09 Atsushi Enomoto <atsushi@ximian.com>
164 * LockCookie.cs, AsyncFlowControl.cs :
165 added missing operator == and !=.
167 2007-05-22 Jonathan Chambers <joncham@gmail.com>
169 * Thread.cs: Use & to check ThreadState rather than ==.
170 Fixes AlbumSurfer regression.
172 2007-05-09 Jonathan Chambers <joncham@gmail.com>
174 * Thread.cs: Implement ApartmentState related items.
176 2007-05-02 Dick Porter <dick@ximian.com>
178 * ReaderWriterLock.cs: ReaderWriterLock derives from
179 CriticalFinalizerObject in the 2.0 profile
181 2007-05-01 Dick Porter <dick@ximian.com>
184 * AsyncFlowControl.cs:
186 * RegisteredWaitHandle.cs:
188 * ThreadStateException.cs:
191 * WaitOrTimerCallback.cs:
193 * EventWaitHandle.cs:
195 * ThreadAbortException.cs:
197 * ReaderWriterLock.cs:
198 * NativeOverlapped.cs:
204 * SynchronizationLockException.cs:
205 * ManualResetEvent.cs:
207 * IOCompletionCallback.cs:
209 * AbandonedMutexException.cs:
210 * SendOrPostCallback.cs:
211 * ThreadInterruptedException.cs: Update to 2.0 profile
213 Thu Apr 19 16:47:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
215 * ThreadPool.cs: patch from Robert Jordan to implement
216 ThreadPool.SetMaxThreads.
218 2007-04-03 Alp Toker <alp@atoker.com>
220 * Monitor.cs: Class is static in 2.0.
222 2007-03-27 Dick Porter <dick@ximian.com>
224 * Mutex.cs: Throw ApplicationException if ReleaseMutex() fails.
227 Tue Jan 23 17:43:50 CET 2007 Paolo Molaro <lupus@ximian.com>
229 * Thread.cs: mark the GC-tracked field with UIntPtr.
231 2006-12-31 Miguel de Icaza <miguel@novell.com>
233 * ThreadPool.cs: Stub a method.
235 2006-12-11 Miguel de Icaza <miguel@novell.com>
237 * WaitHandle.cs: In 2.0 use SafeWaitHandles and the SafeWaitHandle
238 patterns instead of using directly the IntPtr Handle.
240 Refactor the code to reuse as much as possible, and follow the new
241 conventions where appropriate.
243 2006-11-07 Robert Jordan <robertj@gmx.net>
245 * WaitHandle.cs: Don't assume Assembly.GetEntryAssembly () !=
246 null. Fixes bug #79859.
248 2006-11-02 Dick Porter <dick@ximian.com>
250 * Thread.cs: Use the new Interrupt and SpinWait icalls.
252 2006-07-04 Atsushi Enomoto <atsushi@ximian.com>
254 * WaitHandle.cs : CheckArray() is also used in WaitAny(), so added
255 extra argument to skip STAThread check.
257 2006-06-30 Duncan Mak <duncan@novell.com>
259 * WaitHandle.cs (CheckArray): Avoid using reflection unless we
262 2006-06-29 Duncan Mak <duncan@novell.com>
264 * WaitHandle.cs (CheckArray): Throw NotSupportedException if the
265 current thread is marked with the STAThreadAttribute. Fixes bug
268 2006-05-05 Sebastien Pouliot <sebastien@ximian.com>
270 * ExecutionContext.cs: Don't capture the compressed stack unless the
271 security manager is active (this wasn't ready to be called in
274 2004-04-29 Atsushi Enomoto <atsushi@ximian.com>
276 * Timer.cs : avoid NullReferenceException when it is already disposed.
277 Patch by pawel.sakowski@mind-breeze.com. Fixed bug #78208.
279 2004-04-28 Atsushi Enomoto <atsushi@ximian.com>
281 * SynchronizationContext.cs : use ThreadPool in Post(), as suggested
284 2004-04-04 Atsushi Enomoto <atsushi@ximian.com>
286 * Thread.cs : base class is CriticalFinalizerObject.
287 * ThreadStartException.cs : no public constructors.
289 Wed Mar 29 18:29:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
291 * Thread.cs: update for the runtime changes to culture caching.
293 Wed Mar 15 16:35:49 CET 2006 Paolo Molaro <lupus@ximian.com>
295 * Thread.cs: updates for LocalDataStoreSlot: we use an array as
296 storage for the slots now so that LocalDataStoreSlot objects an be
297 garbage collected if the user doesn't keep a reference to them.
299 2006-02-09 Miguel de Icaza <miguel@novell.com>
301 * Monitor.cs: Patch from Thong Nguyen, Wait (.., Timeout) method
302 should allow a -1 (Timeout.Infinite) to mean indefinite wait (the
303 code already supported this.
305 Removed also a LAMESPEC for missing argument checking in Wait with
308 Fixed the use of exceptions.
310 2005-12-23 Dick Porter <dick@ximian.com>
312 * EventWaitHandle.cs:
313 * Mutex.cs: Implement OpenExisting
315 * NativeEventCalls.cs: Add OpenEvent icall for OpenExisting in
316 2.0. Add a "created" boolean out parameter to CreateEvent icall.
318 * ManualResetEvent.cs:
319 * AutoResetEvent.cs: Update CreateEvent icall signature (now has
320 "created" boolean out parameter.)
322 2005-12-17 Dick Porter <dick@ximian.com>
324 * ThreadStartException.cs:
325 * EventWaitHandle.cs:
327 * AbandonedMutexException.cs: New for 2.0 profile
331 * RegisteredWaitHandle.cs:
335 * ManualResetEvent.cs:
336 * AutoResetEvent.cs: Updated for 2.0 profile
338 2005-11-23 Zoltan Varga <vargaz@gmail.com>
340 * Interlocked.cs: Add T:class constraint to the generic
341 CompareExchange and Exchange methods.
343 2005-11-17 Zoltan Varga <vargaz@gmail.com>
345 * Interlocked.cs: Add generic CompareExchange and Exchange methods.
347 2005-11-17 Sebastien Pouliot <sebastien@ximian.com>
349 * WaitHandleCannotBeOpenedException.cs: New (2.0). Is required to
350 compile the Semaphore tests (in System.dll).
352 2005-10-23 Marek Safar <marek.safar@seznam.cz>
354 * SynchronizationContext.cs: A few simple fixes.
356 2005-10-06 Sebastien Pouliot <sebastien@ximian.com>
358 * Thread.cs: Copy an existing IPrincipal to new threads. Fix bug
361 2005-10-06 Sebastien Pouliot <sebastien@ximian.com>
363 * Thread.cs: Added new attributes, [ReliabilityContract] for
364 destructor and [Obsolete] for [Get|Set]CompressedStack, that were
367 2005-09-11 Zoltan Varga <vargaz@gmail.com>
369 * Thread.cs (MemoryBarrier): Make this an icall.
371 2005-09-10 Zoltan Varga <vargaz@gmail.com>
373 * Thread.cs (Interrupt): Make this throw a NotImplementedException.
375 2005-09-09 Martin Baulig <martin@ximian.com>
377 * Timer.cs (Timer.Runner.Start): Silently catch
378 ObjectDisposedException and return; works around some race
379 condition on thread abort.
381 2005-08-19 Dick Porter <dick@ximian.com>
383 * Thread.cs: Reserve 64 bits for the thread ID.
385 2005-07-19 Martin Baulig <martin@ximian.com>
387 * Timer.cs (Timer.Runner.Start): Fix a race condition which was
388 causing a hang on exit int he debugger: check `!disposed' before
389 `start_event.WaitOne ()' and again after it.
391 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
393 * Thread.cs: check that the culture is valid for formatting
394 (ie, (!neutral || invariant)).
396 2005-06-07 Sebastien Pouliot <sebastien@ximian.com>
398 * Thread.cs: Added _Thread interface (and members) and a few missing
399 attributes (for both 1.1 and 2.0).
401 2005-06-06 Zoltan Varga <vargaz@freemail.hu>
403 * Thread.cs Mutex.cs Monitor.cs: Add some missing 2.0 attributes.
405 2005-05-29 Sebastien Pouliot <sebastien@ximian.com>
407 * Timer.cs: Added new constructor for 2.0 and ComVisible attribute.
408 * Timeout.cs: This is a static class in 2.0 and ComVisible attribute.
410 2005-05-26 Ben Maurer <bmaurer@ximian.com>
412 * Thread.cs: Use a static object for a lock rather than
415 2005-05-26 Sebastien Pouliot <sebastien@ximian.com>
417 * SynchronizationContext.cs: Re-introduced SendOrPost method as it's
418 being used in System.Web.Services.
420 2005-05-26 Sebastien Pouliot <sebastien@ximian.com>
422 * SynchronizationContext.cs: Updated to beta2 API so it doesn't depend
423 on the switcher structure anymore (which will be removed from the
426 2005-05-24 Sebastien Pouliot <sebastien@ximian.com>
428 * Thread.cs: Removed #pragma which aren't supported by CSC 7.x.
430 2005-05-20 Sebastien Pouliot <sebastien@ximian.com>
432 * AsyncFlowControl.cs: Now available, as internal, in NET_1_1. This is
433 required to get some methods from SecurityContext and ExecutionContext
435 * CompressedStack.cs: Now includes the current CompressedStack in a new
437 * ExecutionContext.cs: Includes more methods in NET_1_1 to enable
438 ThreadPool.UnsafeQueueUserWorkItem to work properly (i.e. without
440 * Thread.cs: Made ExecutionContext field accessible from the runtime.
441 Added stack propagation when Thread.Start is called.
442 * ThreadPool.cs: QueueUserWorkItem now does stack propagation (done in
443 the runtime), so I "fixed" UnsafeQueueUserWorkItem not to do so.
445 2005-05-19 Miguel de Icaza <miguel@novell.com>
447 * Thread.cs: REmove warnings.
449 2005-05-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
451 * Thread.cs: first check for null, then set in_currentculture.
453 2005-05-12 Lluis Sanchez Gual <lluis@novell.com>
455 * Thread.cs: Moved all checks done inside sync_lock to unmanaged code.
456 Merged Thread_internal and Start_internal into a single icall, which
459 2005-05-11 Sebastien Pouliot <sebastien@ximian.com>
461 * CompressedStack.cs: Allow merging of an existing CompressedStack
462 with the actual stack of the current Thread.
463 * Thread.cs: GetCompressedStack and SetCompressedStack are public
464 before 2.0 but couldn't be seen with mono-api-info because of it's
465 LinkDemand for the ECMA public key. Removed unused CompressedStack
466 private field (now part of the ExecutionContext).
468 2005-05-09 Sebastien Pouliot <sebastien@ximian.com>
470 * CompressedStack.cs: GetCompressedStack is public before 2.0 but
471 couldn't be seen with mono-api-info because of it's LinkDemand for
472 the ECMA public key. Stack capture occurs here if none exists on the
475 2005-04-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
477 * ReaderWriterLock.cs: fix random ApplicationException errors. Tested
478 with the System.Web.Cache stress program. Patch by Eyal Alayuf
479 (Mainsoft). Fixes 74598.
481 2005-04-28 Sebastien Pouliot <sebastien@ximian.com>
483 * Thread.cs: Added property to get the ExecutionContext in 2.0. Fixed
484 GetCompressedStack and made SetCompressedStack available (as internal)
487 2005-04-28 Sebastien Pouliot <sebastien@ximian.com>
489 * AsyncFlowControl.cs: Updated wrt beta2.
490 * ExecutionContext.cs: Updated wrt beta2. Class is now internal in
491 NET_1_1 to allow the compressed stack propagation to other threads.
492 * CompressedStack.cs: Updated wrt beta2. Class is internal in NET_1_1
493 to allow the compressed stack propagation to other threads.
494 * ContextCallback.cs: Updated wrt beta2.
495 * HostExecutionContext.cs: Updated wrt beta2.
496 * HostExecutionContextManager.cs: Updated wrt beta2.
497 * Thread.cs: Added internal property to get the ExecutionContext.
499 2005-04-19 Zoltan Varga <vargaz@freemail.hu>
501 * Thread.cs: Add some unused fields.
503 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
505 * ThreadPool.cs: BindHandle does nothing now.
507 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
509 * Thread.cs: clear the Unstarted bit before calling Start_internal.
512 2005-04-04 Ben Maurer <bmaurer@ximian.com>
514 * Thread.cs: Do argument checking for Current[UI]Culture to make
515 the exception more clear for a null value being set.
517 2005-03-24 Sebastien Pouliot <sebastien@ximian.com>
519 * CompressedStack.cs: Added LinkDemand for UnmanagedCode and ECMA
520 public key on GetCompressedStack method.
521 * Mutex: Added LinkDemand for UnmanagedCode to create named (system
523 * Thread.cs: Added LinkDemand for ECMA public key on [Get|Set]
524 CompressedStack methods.
525 * WaitHandle.cs: Added LinkDemand and InheritanceDemand for
526 UnmanagedCode on set Handle property.
528 2005-03-10 Zoltan Varga <vargaz@freemail.hu>
530 * Thread.cs: Make slothash a ThreadStatic field. Fixes #65414.
532 2005-02-21 Zoltan Varga <vargaz@freemail.hu>
534 * Monitor.cs Interlocked.cs: Add net 2.0 ReliabilityContractAttributes.
536 2005-02-20 Zoltan Varga <vargaz@freemail.hu>
538 * Interlocked.cs: Applied patch from Luca Barbieri (luca.barbieri@gmail.com). Add NET 2.0 methods.
540 Tue Feb 15 18:19:11 CET 2005 Paolo Molaro <lupus@ximian.com>
542 * Thread.cs: make the slothash a field in MonoThread.
544 2005-01-27 Sebastien Pouliot <sebastien@ximian.com>
546 * Overlapped.cs: Added check for ControlPolicy and ControlEvidence for
547 Unsafe pack. Added MonoTODO for missing security stack propagation.
548 * Thread.cs: Add security checks for ControlThread.
549 * ThreadPool.cs: Added declarative security checks.
551 Thu Jan 13 18:15:32 CET 2005 Paolo Molaro <lupus@ximian.com>
553 * Thread.cs: implement stacksize and parameterized
554 start functionality (requires matching runtime).
556 2005-01-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
558 * ThreadAbortException.cs: added private serialization .ctor.
560 2004-12-20 Sebastien Pouliot <sebastien@ximian.com>
562 * CompressedStack.cs: Implemented most todo so it's usable for CAS.
563 * CompressedStackSwitcher.cs: Implemented most todo.
564 * Thread.cs: Implement support for getting/setting CompressedStack.
566 2004-12-15 Zoltan Varga <vargaz@freemail.hu>
568 * Thread.cs: Change type of culture_info and ui_culture_info to
569 IntPtr. Implement correct culture handling for the UI culture as
572 2004-12-14 Zoltan Varga <vargaz@freemail.hu>
574 * Thread.cs: Optimize CurrentCulture to avoid initializing the
575 serialization infrastructure in the common case when the culture is
578 2004-12-06 Zoltan Varga <vargaz@freemail.hu>
580 * Thread.cs: Add new fields 'serialized_culture_info{_len}'.
582 * Thread.cs (CurrentCulture): Fix leaking of culture info objects
583 across appdomains. Partially fixes #50049.
585 2004-12-05 Miguel de Icaza <miguel@ximian.com>
587 * AutoResetEvent.cs (Set, Reset): If we are disposed, throw a
588 ObjectDisposedEvent, helped track the WebConnection destructor
591 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
593 * Timer.cs: don't invoke the callback twice when the timer changes.
596 2004-09-08 Marek Safar <marek.safar@seznam.cz>
598 * Interlocked.cs: Class is static in NET_2_0.
600 2004-09-04 Sebastien Pouliot <sebastien@ximian.com>
602 * Thread.cs: Changed an imperative security demand to declarative
603 (unsupported) so it doesn't (for now) call the security runtime.
605 2004-08-20 Sebastien Pouliot <sebastien@ximian.com>
607 * Thread.cs: Added Fx 2.0 properties/methods/attributes.
609 2004-08-12 Sebastien Pouliot <sebastien@ximian.com>
611 * CompressedStackSwitcher.cs: Added missing [ComVisible] and
612 [ReliabilityContract] attributes.
613 * ExecutionContext.cs: Added missing [ComVisible] and
614 [Serializable] attributes.
615 * HostExecutionContext.cs: Added missing [ComVisible] attribute.
616 * HostExecutionContextManager.cs: Added missing [ComVisible] and
617 [ReliabilityContract] attributes.
618 * HostExecutionContextSwitcher.cs: Added missing Equals and
619 GetHashCode methods and [ComVisible] and [ReliabilityContract] attrs.
620 * ParameterizedThreadStart.cs: New delegate in NET_2_0.
621 * SendOrPostCallback.cs: Added missing [ComVisible] attribute.
622 * SynchronizationContext.cs: Added new (2.0 beta1) methods Copy and
623 WaitHelper. Added missing [ComVisible] and [ReliabilityContract] attrs.
624 * SynchronizationContextSwitcher.cs: Added missing [ComVisible] and
625 [ReliabilityContract] attributes.
627 2004-08-08 Sebastien Pouliot <sebastien@ximian.com>
629 * HostExecutionContext.cs: Fx 2.0 stub required for AppDomain.
630 * HostExecutionContextManager.cs: Fx 2.0 stub required for AppDomain.
631 * HostExecutionContextSwitcher.cs: Fx 2.0 stub required for AppDomain.
633 2004-08-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
635 * Timer.cs: don't invoke the callback if the period changes before the
636 due time. Fixes bug #62421.
638 2004-07-27 Lluis Sanchez Gual <lluis@novell.com>
640 * ExecutionContext.cs, ExecutionContextSwitcher.cs,
641 SynchronizationContext.cs, SynchronizationContextSwitcher.cs: Added
644 2004-07-15 Dick Porter <dick@ximian.com>
646 * Thread.cs: Hold a lock in GetNamedDataSlot. Fixes bug 61582,
647 based on patch by Sbastien Robitaille
648 (sebastien.robitaille@croesus.com). Also fix instances of
649 lock(typeof(Thread)) to lock a private object instead.
651 2004-07-14 Sebastien Pouliot <sebastien@ximian.com>
653 * AsyncFlowControl.cs: New structure in Fx 2.0 required in
654 System.Security namespace.
655 * CompressedStackSwitcher.cs: New structure in Fx 2.0 required in
656 System.Security namespace.
657 * ContextCallback.cs: New delegate in Fx 2.0 required in
658 System.Security namespace.
659 * CompressedStack.cs: Updated API for NET_2_0 profile.
661 2004-07-10 Lluis Sanchez Gual <lluis@ximian.com>
663 * SendOrPostCallback.cs: New delegate.
665 2004-06-24 Dick Porter <dick@ximian.com>
667 * Mutex.cs: Implement the createdNew parameter
669 2004-06-15 Gert Driesen <drieseng@users.sourceforge.net>
671 * Thread.cs: changed return type of VolatileRead to UIntPtr
672 * ThreadPool.cs: set return type of SetMinThreads to bool
674 2004-06-15 Lluis Sanchez Gual <lluis@ximian.com>
676 * Thread.cs: Added new fields to keep sync with MonoThread.
677 Removed state changes in Sleep and Join. The state change is now done
678 in the icall. For accessing to internal fields lock with synch_lock
679 instead of this, which can be a source of deadlocks.
681 2004-06-15 Lluis Sanchez Gual <lluis@ximian.com>
683 * Timer.cs: Don't abort the thread if Dispose() is called from the runner
686 2004-06-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
689 (CurrentPrincipal): lock on CurrentThread, not typeof (Thread) and set
690 the thread IPrincipal if we get it from the AppDomain.
692 2004-06-09 Gert Driesen <drieseng@users.sourceforge.net>
694 * CompressedStack.cs: Added finalizer to match public API of
697 2004-05-19 Lluis Sanchez Gual <lluis@ximian.com>
699 * Thread.cs: Some fixes in Abort. Implemented Suspend and Resume.
700 Added internal interruption_requested field.
702 2004-05-13 Sebastien Pouliot <sebastien@ximian.com>
704 * CompressedStack.cs: Added an internal constructor so a default one
705 doesn't appear with corcompare.
706 * Thread.cs: Added missing MemoryBarrier (only for 1.1) and SpinWait to please
707 corcompare. Both throw a NotImplementedException.
708 * ThreadPool.cs: Added missing UnsafeRegisterWaitForSingleObject methods (4
709 overloads) to please corcompare. All throw a NotImplementedException.
711 2004-05-12 Zoltan Varga <vargaz@freemail.hu>
713 * CompressedStack.cs: New file.
715 2004-04-15 Lluis Sanchez Gual <lluis@ximian.com>
717 * ThreadPool.cs: Added GetMinThreads and SetMinThreads.
718 * Timer.cs: In Change, return false if the timer has been disposed.
719 In Dispose, notify the WaitHandle.
721 2004-04-11 Lluis Sanchez Gual <lluis@ximian.com>
723 * ReaderWriterLock.cs: More fixes: never wait where acquiring a reader lock
724 if the thread already has the lock. Added readyWaitingReaders variable to
725 keep track of threads ready to get the reader lock.
727 2004-04-11 Lluis Sanchez Gual <lluis@ximian.com>
729 * LockQueue.cs: Moved lockCount change inside the rwlock lock. Removed
730 lock(this) when entering the rwlock to avoid a deadlock.
731 * ReaderWriterLock.cs: In AcquireWriterLock, queue the thread if the queue
732 is not empty (even if state==0).
734 2004-04-09 Zoltan Varga <vargaz@freemail.hu>
736 * Timer.cs: Call the callback immediately if dueTime is 0. Fixes
739 2004-04-08 Jackson Harper <jackson@ximian.com>
741 * ReaderWriterLock.cs: Fix tyop
743 2004-04-08 Lluis Sanchez Gual <lluis@ximian.com>
745 * ReaderWriterLock.cs: Changed some methods to private.
746 * WaitHandle.cs: In Wait methods, release the synchronization context when
749 2004-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
751 * Timer.cs: call Abort on the Runner instance too.
753 2004-04-07 Jackson Harper <jackson@ximian.com>
755 * Thread.cs: Use new culture info method for constructing the
758 2004-04-07 Lluis Sanchez Gual <lluis@ximian.com>
760 * ReaderWriterLock.cs: When a thread holds a writer lock, a call to
761 AcquireReaderLock works like a call to AcquireWriterLock.
763 2004-04-06 Lluis Sanchez Gual <lluis@ximian.com>
765 * Monitor.cs: In Wait(), release the synchronization context when
768 2004-04-06 Lluis Sanchez Gual <lluis@ximian.com>
770 * LockCookie.cs: Keep in this class the count of reader or writer locks
771 for a thread, not only whether it has locks or not.
772 * LockQueue.cs: Added property for checking if a thread is waiting in
773 the queue. Wait now returns a boolean that set to false on timeout
775 * ReaderWriterLock.cs: Started fixing bugs but I had to rewrite a lot of it.
776 The main change is that now it keeps a reader lock count for each
777 thread. This is needed since methods like ReleaseLock or
778 UpgradeToWriterLock need to return a per-thread status in LockCookie.
779 Also added support for recursive writer-lock requests.
781 2004-03-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
783 * ThreadAbortException.cs: use same HResult as MS.
784 * Timer.cs: abort the running thread when disposing the Timer. This
785 fixes NullRefs when finishing xsp.
787 2004-03-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
789 * NativeOverlapped.cs: added 2 new internal fields.
790 * Overlapped.cs: implemented, but it's not used.
792 * ThreadPool.cs: implemented BindHandle.
794 2004-03-08 Zoltan Varga <vargaz@freemail.hu>
796 * Timer.cs (Dispose): Applied patch from Jaroslaw Kowalski
797 (jaak@zd.com.pl). Fix finalization problems during appdomain unload.
799 2004-02-23 Jackson Harper <jackson@ximian.com>
801 * LockCookie.cs: Add some fields for restoring locks.
802 * ReaderWriterLock.cs: Implement
803 * LockQueue.cs: New File - used for queueing thread locks in
806 2004-02-19 Jackson Harper <jackson@ximian.com>
808 * Monitor.cs: Fix spelleng.
810 2004-02-09 Zoltan Varga <vargaz@freemail.hu>
812 * Thread.cs: Add fields added to unmanaged MonoThread here as well.
813 Fixes random errors caused by memory corruption.
815 2004-02-06 Zoltan Varga <vargaz@freemail.hu>
817 * Thread.cs: Store the thread name in unmanaged memory, since the
818 thread object is shared between appdomains.
820 2004-02-05 Sebastien Pouliot <sebastien@ximian.com>
822 * Thread.cs: Implemented CurrentPrincipal.
824 2004-01-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
826 * Thread.cs: delayed thread creation until Start is called. If we
827 don't do that and Start() is not called, the thread is leaked. First
828 step towards fixing bug #53078.
830 2003-12-02 Dick Porter <dick@ximian.com>
832 * Thread.cs: Throw InvalidOperationException if Thread.Name is
835 2003-12-01 Dick Porter <dick@ximian.com>
837 * Thread.cs: Implement CurrentCulture and CurrentUICulture
839 2003-11-12 Miguel de Icaza <miguel@ximian.com>
841 * Thread.cs: Add new VolatileRead/VolatileWrite methods from 1.1
843 2003-10-23 Lluis Sanchez Gual <lluis@ximian.com>
845 * Thread.cs: Added ResetDataStoreStatus and RestoreDataStoreStatus
846 methods. They are used in CrossAppDomainChannel to save and restore
847 thread's local data when switching between domains.
849 2003-10-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
851 * ManualResetEvent.cs: added check for disposed.
852 * Thread.cs: no need to init this field.
854 2003-10-01 Zoltan Varga <vargaz@freemail.hu>
856 * Thread.cs: Add locking to AllocateNamedDataSlot and
859 Wed Aug 20 12:01:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
861 * Thread.cs: put all the fields at the start and add
862 more fields needed by the runtime.
864 2003-08-14 Lluis Sanchez Gual <lluis@ximian.com>
866 * Thread.cs: SetData() method: use Hashtable.Contains to check
867 if a dataslot has been allocated (value could be null).
869 2003-07-23 Duncan Mak <duncan@ximian.com>
871 * WaitHandle.cs (CheckDisposed): This method is not in the public
872 API, mark it as 'internal'.
874 2003-07-01 Dick Porter <dick@ximian.com>
876 * Thread.cs: Throw an exception if thread creation failed.
877 (Better than just blowing up later.)
879 2003-06-27 Dietmar Maurer <dietmar@ximian.com>
881 * ThreadPool.cs: use async delegate invoke.
883 2003-06-25 Dick Porter <dick@ximian.com>
885 * WaitHandle.cs: Default handle value should be InvalidHandle, not
888 2003-06-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
890 * ThreadPool.cs: correctly create a TimeSpan with provided the number of
893 * WaitHandle.cs: fixes for WaitAny/All and TimeSpan.
895 2003-06-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
897 * WaitHandle.cs: checks and exceptions.
899 2003-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
901 * NativeEventCalls.cs: added CloseEvent_intenal.
902 * WaitHandle.cs: call CloseEvent_internal when disposing.
904 2003-05-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
906 * RegisteredWaitHandle.cs: check that the callback is not null before
909 * ThreadPool.cs: fixed timeout -> TimeSpan conversions (closes bug
910 #43963). Queue the item before setting the handle. If there's a timeout,
911 avoid trying to Dequeue, getting the exception et al, just continue the
914 Mon May 19 09:07:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
916 * Monitor.cs: removed test_owner, the check is already done in the
919 Tue May 13 15:34:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
921 * Thread.cs: added missing field used by the runtime and
922 a new field to support thread-static data.
924 2003-04-17 Pedro Mart?ez Juli? <yoros@wanadoo.es>
926 * Timer.cs: Change the position of two lines because they were
927 before the "if" that ensures the integrity. After this, the first of
928 that two lines was producing a NullReferenceException.
930 2003-04-09 Dick Porter <dick@ximian.com>
932 * Thread.cs: Make sure a reference to the ThreadStart delegate is
933 held. There's no telling how long it will be before
934 Thread.Start() is called, and GC might destroy the delegate.
935 Thread() and Start() need to be rewritten so that the runtime
936 creates the new thread when Start() is called, which will simplify
937 the code a great deal.
939 2003-03-20 Miguel de Icaza <miguel@ximian.com>
941 * Thread.cs (CurrentCuluture): use the invaraint culture instead
942 of "" for the current_culture setting.
944 2003-03-25 Zoltan Varga <vargaz@freemail.hu>
946 * Thread.cs: Fix visibility of ResetAbort().
948 2003-03-18 Dick Porter <dick@ximian.com>
950 * Thread.cs: Keep the thread state updated in all the places that
951 require it. (Suspend, Resume and Interrupt not handled yet)
953 2003-03-03 Lluis Sanchez Gual <lluis@ideary.com>
955 * Thread.cs: Changed implementation of CurrentContext, adapted to the changes
958 2003-02-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
960 * Thread.cs: implemented CurrentContext.
962 2003-02-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
964 * Thread.cs: made the thread_id for the current thread accesible through
965 an internal property.
967 2003-02-17 Dick Porter <dick@ximian.com>
969 * Thread.cs: Added the Start semaphore field to the class. Update
970 the thread state after Start() has returned, not before.
972 2003-02-13 Zoltan Varga <vargaz@freemail.hu>
974 * Thread.cs (Sleep): Timeout.Infinite is a value argument.
976 2003-02-11 Dick Porter <dick@ximian.com>
978 * Monitor.cs: Infinite wait is Infinite, not 0 ms
980 2003-02-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
982 * Thread.cs: fixed bug #37759.
984 2003-02-07 Patrik Torstensson
986 * Timer.cs: Set the Background thread flag for the timer thread
988 2003-02-05 Patrik Torstensson
990 * ThreadPool.cs: Reformated and fixed issue that made all thread exit the pool.
992 2003-02-04 Lluis Sanchez Gual <lluis@ideary.com>
994 * ThreadPool.cs: Implemented RegisterWaitForSingleObject methods.
996 Tue Jan 28 17:55:59 CET 2003 Paolo Molaro <lupus@ximian.com>
998 * Thread.cs: delay-init datastorehash.
1000 2003-01-10 Patrik Torstensson <totte@race-x-change.com>
1002 * ThreadPool.cs: Temporary removed the usage of monitor thread, implemented a
1003 model more equal to the MS one.
1005 2002-12-10 Dick Porter <dick@ximian.com>
1011 * WaitHandle.cs: Use TotalMilliseconds to convert a TimeSpan to
1012 ms, not Milliseconds.
1014 2002-12-07 Martin Baulig <martin@ximian.com>
1016 * Timer.cs: Make it actually work; now it no longer sets your
1017 application on fire if you use a zero periode and Timer.Change()
1020 2002-11-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1022 * Timer.cs: implemented more stuff. It works now.
1024 2002-10-25 Zoltan Varga <vargaz@freemail.hu>
1026 * Thread.cs: Implement GetDomain() and GetDomainID().
1028 2002-10-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1030 * ThreadPool.cs: now the monitor thread is not sleeping and checking if
1031 more worker threads needed. It waits on _DataInQueue. If (and only if)
1032 there's data in the queue it checks if more worker threads needed and
1033 then sleeps 0.5s before waiting for queued data again.
1035 2002-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1037 * ThreadPool.cs: set IsThreadPoolThread before starting the worker.
1039 2002-09-11 Dick Porter <dick@ximian.com>
1042 * ManualResetEvent.cs:
1043 * AutoResetEvent.cs: Use the WaitHandle.Handle property instead of
1046 * WaitHandle.cs: Hide the os_handle field and the WaitOne_internal
1049 2002-09-03 Dick Porter <dick@ximian.com>
1051 * Thread.cs: Added thread ID field
1053 2002-08-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1055 * WaitHandle.cs: IDisposable fixes.
1057 2002-08-14 Dick Porter <dick@ximian.com>
1059 * Thread.cs: Make CurrentUICulture act the same as CurrentCulture
1062 2002-08-12 Dietmar Maurer <dietmar@ximian.com>
1064 * ThreadAbortException.cs: impl. ExceptionState property.
1066 * Thread.cs: moved all instance variables to the start of the
1067 class. added support for Thread::Abort()
1069 2002-04-30 Dick Porter <dick@ximian.com>
1071 * Thread.cs: If LocalDataStoreSlot already has data set, remove it
1072 before adding a new one.
1074 Use the Thread object destructor to tell the runtime to close the
1077 2002-04-14 Patrik Torstensson <patrik.torstensson@labs2.com>
1079 * Interlocked.cs: made all methods icalls.
1081 2002-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1083 * IOCompletionCallback.cs: added attributes to the delegate
1084 (CLSCompliant(false) and Serializable).
1086 2002-04-14 Patrik Torstensson <patrik.torstensson@labs2.com>
1087 * Thread.cs: Fixed IsThreadPoolThread to use a internal property instead of extending
1088 the threadstate enum.
1089 * ThreadPool.cs: Now using the internal Isthreadpoolthread property
1090 * ThreadState.cs: removed non-standard enum (ThreadPoolThread)
1092 2002-04-14 Patrik Torstensson <patrik.torstensson@labs2.com>
1094 * ThreadState.cs: Added enum for threadpool thread
1095 * Thread.cs: changed the set/clr_state to be internal (used from threadpool)
1096 * Thread.cs: Added IsThreadPoolThread
1097 * ThreadPool.cs: Implementation of QueueUserWorkItem
1099 Wed Feb 13 21:51:30 CET 2002 Paolo Molaro <lupus@ximian.com>
1101 * Thread.cs: implement CurrentCulture property needed by
1102 Convert.ChangeType() (used when compiling enums).
1104 2002-01-23 Dick Porter <dick@ximian.com>
1106 * ManualResetEvent.cs:
1107 * AutoResetEvent.cs: Fixed DOS line endings
1109 2002-01-22 Veronica De Santis <veron78@interfree.it>
1111 * NativeEventCalls : Class that contains internal calls shared by Auto
1112 and Manual Reset Events
1113 * AutoResetEvents.cs : Added class AutoResetEvents and its implementation
1114 * ManualResetEvents.cs : Added class ManualResetEvents and its implementation
1116 2002-01-16 Veronica De Santis <veron78@interfree.it>
1118 * WaitHandle.cs : Renamed handle to os_handle and make it protected
1120 * Mutex.cs : Write the System.Threading.Mutex methods ( constructors
1121 and the ReleaseMutex)
1123 2002-01-15 Dick Porter <dick@ximian.com>
1126 * Thread.cs: Make the runtime's idea of infinite timeouts coincide
1127 with the class library's
1129 2002-01-10 Dick Porter <dick@ximian.com>
1131 * WaitHandle.cs: Added checks for too many handles and null
1132 handles in WaitAll() and WaitAny
1135 2002-01-05 Ravi Pratap <ravi@ximian.com>
1137 * AutoResetEvent.cs, ManualResetEvent.cs, Monitor.cs : MonoTODO
1140 * Mutex.cs, Overlapped.cs, ReaderWriterLock.cs, RegisteredWaitHandle.cs,
1141 Thread.cs, ThreadAbortException.cs, ThreadPool.cs, Timer.cs, WaitHandler.cs : Ditto.
1143 2001-12-11 Dick Porter <dick@ximian.com>
1145 * WaitHandle.cs: Implemented WaitAll(), WaitAny() and WaitOne() as
1148 2001-11-26 Dick Porter <dick@ximian.com>
1150 * Thread.cs: DataSlot uses a single system TLS slot, and a
1151 hashtable per thread. Some minor changes to reflect the new
1152 internal calls using the new IO library, and the newly-supported
1153 bool returns from internal calls.
1155 * Monitor.cs: Use bool returns from internal calls now they are
1156 supported by the runtime. Coalesce enter with the try_enter
1159 Wed Nov 14 17:06:18 CET 2001 Paolo Molaro <lupus@ximian.com>
1161 * Overlapped.cs, ThreadPool.cs, Timer.cs: CLSCompliant updates.
1163 2001-10-03 Dick Porter <dick@ximian.com>
1165 * Monitor.cs: Implemented all methods except the two Wait()
1166 methods that take boolean parameters
1168 2001-09-28 Dick Porter <dick@ximian.com>
1170 * Thread.cs: Implemented AllocateDataSlot(),
1171 AllocateNamedDataSlot(), FreeNamedDataSlot(), GetData(),
1172 GetNamedDataSlot(), SetData(), IsBackground. Reworked Thread()
1173 and Start() to avoid a race condition. Added thread-safe state
1174 changing private operations.
1176 * Monitor.cs: Comment out the GetType() calls because it isn't implemented yet
1178 2001-09-25 Dick Porter <dick@ximian.com>
1180 * Thread.cs: Implement Join and timed Join, set correct state
1181 around Start, Join and Sleep calls, implement IsAlive and
1182 ThreadState properties.
1184 * ThreadState.cs (Threading): Added StopRequested,
1185 SuspendRequested, Suspended values
1187 2001-09-23 Dick Porter <dick@ximian.com>
1189 * Thread.cs: Implemented CurrentThread and Sleep (both versions)
1190 with internal calls, and Name.
1192 2001-09-21 Dick Porter <dick@ximian.com>
1194 * Thread.cs: Implement Thread(ThreadStart) constructor and Start()
1195 with an internal call
1197 * WaitHandle.cs: Close calls Dispose(false)
1199 2001-09-13 Dick Porter <dick@ximian.com>
1201 * ApartmentState.cs (Threading): Set the correct enum values
1203 2001-09-13 Dick Porter <dick@ximian.com>
1205 * ApartmentState.cs, AutoResetEvent.cs, IOCompletionCallback.cs,
1206 Interlocked.cs, LockCookie.cs, ManualResetEvent.cs, Monitor.cs,
1207 Mutex.cs, NativeOverlapped.cs, Overlapped.cs, ReaderWriterLock.cs,
1208 RegisteredWaitHandle.cs, SynchronizationLockException.cs,
1209 Thread.cs, ThreadAbortException.cs, ThreadInterruptedException.cs,
1210 ThreadPool.cs, ThreadStart.cs, ThreadStateException.cs,
1211 Timeout.cs, Timer.cs, TimerCallback.cs, WaitCallback.cs,
1212 WaitHandle.cs, WaitOrTimerCallback.cs: System.Threading class
1215 2001-07-18 Michael Lambert <michaellambert@email.com>
1217 * ThreadPriority.cs, ThreadState.cs: Add.