Skip to main content

Home/ Coders/ Group items tagged Threading

Rss Feed Group items tagged

Matteo Spreafico

Joe Duffy's Weblog - OnBeingStateful - 0 views

  • The biggest question left unanswered in my mind is the role state will play in software of the future.
  • The biggest question left unanswered in my mind is the role state will play in software of the future. That seems like an absurd statement, or a naïve one at the very least.  State is everywhere: The values held in memory. Data locally on disk. Data in-flight that is being sent over a network. Data stored in the cloud, including on a database, remote filesystem, etc. Certainly all of these kinds of state will continue to exist far into the future.  Data is king, and is one major factor that will drive the shift to parallel computing.  The question then is how will concurrent programs interact with this state, read and mutate it, and what isolation and synchronization mechanisms are necessary to do so?
  • Many programs have ample gratuitous dependencies, simply because of the habits we’ve grown accustomed to over 30 odd years of imperative programming.  Our education, mental models, books, best-of-breed algorithms, libraries, and languages all push us in this direction.  We like to scribble intermediary state into shared variables because it’s simple to do so and because it maps to our von Neumann model of how the computer works.
  • ...3 more annotations...
  • We need to get rid of these gratuitous dependencies.  Merely papering over them with a transaction—making them “safe”—doesn’t do anything to improve the natural parallelism that a program contains.  It just ensures it doesn’t crash.  Sure, that’s plenty important, but providing programming models and patterns to eliminate the gratuitous dependencies also achieves the goal of not crashing but with the added benefit of actually improving scalability too.  Transactions have worked so well in enabling automatic parallelism in databases because the basic model itself (without transactions) already implies natural isolation among queries.  Transactions break down and scalability suffers for programs that aren’t architected in this way.  We should learn from the experience of the database community in this regard
  • There will always be hidden mutation of shared state inside lower level system components.  These are often called “benevolent side-effects,” thanks to Hoare, and apply to things like lazy initialization and memorization caches.  These will be done by concurrency ninjas who understand locks.  And their effects will be isolated by convention.
  • Even with all of this support, we’d be left with an ecosystem of libraries like the .NET Framework itself which have been built atop a fundamentally mutable and imperative system.  The path forward here is less clear to me, although having the ability to retain a mutable model within pockets of guaranteed isolation certainly makes me think the libraries are salvageable.  Thankfully, the shift will likely be very gradual, and the pieces that pose substantial problems can be rewritten in place incrementally over time.  But we need the fundamental language and type system support first.
Joel Bennett

WPF Unit Testing - C# Disciples - 0 views

    There are are a couple of valuable tricks already in this toolkit: 1) a fix for NUnit (and others) to allow unit testing things which must run in STA mode. 2) a way to make your XAML data binding testable by tracing data binding warnings
Joel Bennett

Microsoft IE8 and Google Chrome - Processes are the New Threads - Scott Hanselman's Com... - 0 views

    ... Google Chrome (alpha) ... Internet Explorer 8 (Beta) ... both isolate tabs in separate processes.
Joel Bennett

Universal Console Redirector - The Code Project - 0 views

    Console Redirection for all Windows platform versions
1 - 5 of 5
Showing 20 items per page