| ThreadAbortException exception thread synchronization (continued)
blocking, avoiding, 805
blocking countdown, 804 class libraries and, 759
condition variable pattern, 811 constructs, 805
double-check locking, 807
drawbacks of, 757
exception handling and, 476 hybrid, 790
hybrid constructs. See hybrid constructs livelocks and deadlocks, 761
lock, 189, 799
locks, 476, 725
lock scalability issues, 814
m_opCount field, 772
Mutex objects, 786
parallel execution, 805
performance issues, 758
primitive constructs, 760 priority boosting, disabling, 774 private locks, 797
properties and, 233
reader-writer locks, 801, 804
recursive locks, 786
recursive locks, avoiding, 806 specifying synchronization object, 811 spin lock addition logic, 774
spin locks, 773
tasks vs., 807
yielding threads when, 775 ThreadAbortException exception, 580
ThreadException event, 488
threading models, 748
Threading namespace, 695, 720, 778
DispatcherTimer class, 723
Timer class, 723
ThreadPerTaskScheduler, 713
ThreadPool class, 693
for Windows Store apps, 694 threads, 102
in 16-bit Windows, 669 aborting, 578, 679
allocating local variables, 105
asynchronous compute-bound operations with, 678
avoiding, 674
blocking, avoiding, 705
caching of, 673
CLR and Windows interoperability, 678 constructors for, 679
contexts, 671
context structures, 683
context switching, 672, 673, 683 creating, vs. creating processes, 675 debuggers and, 673
dedicated, 679
defined, 670
DLL thread-attach/thread-detach
notifications, 671
early implementation of, 669 ending early, 673
execution contexts, 694, 695
forcibly killing, 670
foreground, 679
foreground vs. background, 688 garbage collection and, 673 gracefully aborting, 577
High priority class, 685 Idle priority class, 685 Idle priority level, 687
inefficient memory allocation and, 676
kernel-mode stacks, 671
labeling, avoiding, 806
lowering priority, 687 minimizing number of, 676 number per process, 674 overhead, 670
performance issues, 674, 681
prioritizing, 684, 685, 688 priority levels, mapping, 686 priority, non-normal, 679
properties, viewing, 683 Realtime priority class, 685 reasons for using, 681 relative priorities, 685
responsiveness of, 681
safe places, 580
Type parameters
scalability, 674
scheduling, 683, 684
starting, 679
starvation, 684
suspending, 774
Time-Critical priority level, 687 time-slices, 672
user-mode stacks, 671
Windows Store apps, APIs removed for, 678 yielding, 775
zero page, 684, 686
ThreadsSharingData class, 766, 767
ThrowIfCancellationRequested method, 704 throwing exceptions, 466. See also exceptions;
exception types
Time-Critical thread priority level, 687 time-slices, 672
ending early, 673
Timer class, 720, 723
Timer objects, garbage collection of, 721 Timers namespace, Timer class, 723 ToArray method, 658
ToLowerInvariant method, 318
ToObject method, 367
torn reads, 762
ToSingle method, 310
ToString method, 134, 238, 318, 335, 337, 339,
364, 365, 569
number formatting, 341
output formatting, 369
output of, 364
overriding, 339
parameterless, 340
parameters, 340
vs. Format method, 364 System.Object, 92
ToString, null for format string, 341 ToUpperInvariant method, 318
Transaction class, 797
TransactionScope class, 475 triggering garbage collections, 519
try blocks, 454. See also catch blocks; finally
blocks
as callback methods, 497
constrained execution regions and, 475
finally blocks and, 457
threads and, 671
TryParse method, 366, 370, 493 exception handling and, 494
Tuple
class, 241
types, 237, 240
properties and, 241
type arguments, 266
type constructors, 187
calling, 188
calling in order, avoiding, 189 default, 187
defined, 151
defining, 188
defining inside value types, avoiding, 188 initializing singleton objects with, 189 mutual references in, 189
naming convention for, 190 private, 188
thread synchronization lock, 189 unhandled exceptions, 189
type definitions, example of, 153
type inference
generic methods and, 283 overview of, 283
type object pointer, 105 Type objects, 591
converting to RuntimeTypeHandle, 609 converting to TypeInfo objects, 592
for generic types, 272 obtaining, 591
obtaining from type names at compile time, 592
open, creating, 272 sync blocks and, 795
type parameters, 266 constraining to interfaces, 305 constraints, 287, 288 constructor constraints for, 289
contra-variant and covariant, 279 generic, 281
naming conventions, 266 overriding methods and, 286 variance and, 280
Date: 2016-03-03; view: 985
|