As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
Does anyone have any books written for .net that deal with multithreading? I've looked at Joe Duffy's and Joseph Albahari's books, and they're good. I was hoping however, to have something that also touches on PLINQ and TPL, which Duffy's book certainly does, but many of its examples and snippets are in C++. I was ideally looking for something a little more C# oriented.
Thanks for your suggestions.
Joe Duffy's Concurrent Programming on Windows.
C# 4.0 in a Nutshell hasn't been released yet, but you can access the manuscript online. It covers the PLINQ/TPL libraries.
I strongly suggest, based on his past excellent work, waiting for the second edition of Joe Duffy's seminal Concurrent Programming on Windows if new features in the 4.0 .Net release are what you are after.
Since you are looking for info on an, as yet unreleased, API anything you get now, as opposed to March 2010 is likely to be not quite up to date (or worse will have inaccurate advice - a serious flaw in concurrent programming as small, seemingly trivial aspects can be very important).
To tide you over in the mean time you can read his blog
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
A few months back, we introduce Rx into our codebase, and since then the codebase is getting more and more "reactive". I feel that it is really easy to introduce concurrency into the codebase with Rx, as not a single line of "locking" was used yet.
However, I do not understand why it is easy with Rx when I can't explain it in words.
Is it related to the "Actor Model" and "Functional Reactive Programming" concept?
Can someone kindly enlighten me on this please?
I think the main reason it's "easy" is because of the blood, sweat and tears poured into the Rx library by the very smart Dev team behind it at MS.
Look at the (open) source code to see just how much careful code goes into enforcing the Rx grammar and the parameterisation of when and where things run using Schedulers. That has plenty of defensive concurrent code in it. I suggest it's the grammar and Schedulers that bring the simplicity.
Using the model is quite easy, but achieving that simplicity was not trivial. You are benefiting from standing on the shoulders of giants that have hidden the complexity behind a neat and tidy API :)
Incidentally, there is still the odd trap for you to fall into... I'm sure you'll find one sooner or later! One example is that Subject<T>.OnNext() is not protected from concurrent access in Rx 2.x for performance reasons.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
What would you suggest as a road map for becoming very proficient in writing multithreaded applications - beyond "tinkering"?
I am a C# developer - would branching off into some other languages help this endeavor?
Does the parallel addition to .NET 4.0 hide things that you should know in order to make it easier?
Read Joe Duffy's "Concurrent Programming on Windows". Joe is an amazing expert.
Investigate different approaches to concurrency on different platforms; look at Erlang, Scala etc
Likewise read Java concurrency books, which will have some subtly different details, but often tackle the same core issues and have some useful patterns. "Java Concurrency in Practice" is often recommended.
Look at the various options on .NET, including the Coordination and Concurrency Runtime and F# asynchronous computations
Definitely learn Parallel Extensions - it'll help a lot, and from what I've seen, a lot of very careful design work has gone into it. (It's changing somewhat for 4.0b2 though, so you may want to defer this for now.)
Theres a really good PDF about threading in .NET here the MSDN documentation for the Thread class as well as the threading primitives (Mutex, WaitHandle, ReaderWriterLockSlim et al) is also good reading.
The key things to understand are:
When to use a thread
When not to use threads
How to manage sharing state between threads.
I could go on to explain these here, but I feel the threading PDF linked to above does a far better job than I could in that respect, the key point is that threads are a powerful tool and understanding when and how to use them will make you more proficient in their use than simply reading MSDN, although strategies for using threads effectively are covered there also.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
what book would you recommend to improve one's c# style of writing? I know Code Complete has a few tips on style and organizing code but it's not specific to c#.
Framework Design Guidelines, 2nd Edition.
Not a book, but check out StyleCop
Have a look at the iDesign coding standards at:
http://www.idesign.net/idesign/DesktopDefault.aspx
MSDN has some good guidelines for developing C# classes.
Effective C# by Bill Wagner, as well as the sequel, More Effective C#.
CLR Via C# by Jeffrey Richter contains all the 2.0 patterns you need to follow in order to produce good code. Helped me immensely.
C# 4.0 in a Nutshell, Fourth Edition is great book
C# Concisely very thorough
Elements of C# Style is a good primer.
While it may not go into as much detail as other books that are available but I've definetly got my moneys worth from it - highly recommended.
I would also recommend Clean Code by Robert Martin. Yes, it's not C#-specific, and yes, it will improve one's C# style of writing. It might be a good idea to continue with Agile Software Development, Principles, Patterns, and Practices book by the same author.
And here is 1 hour video from uncle Bob at Øredev conference Clean Code III: Functions
PS: Shameless plug. I developed a site which answers exactly this question: "Which book is of higher importance in given area?". I get the data from Amazon, and draw a network of books. The more links one book has the higher its importance. Thanks to this site I also found "Agile Principles, Patterns, and Practices in C#", again by Robert Martin, but I prefer the original book.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Most C# developers developers, like me have a good solid grasp on the .net framework and the C# language. But I've yet to come across a book that can take a very good c# developer to the next level of C# mastery.
I am looking for a book that can help me make that transition. Dealing with issues like theory on having more robust C# code when connecting to external systems etc. Error logging techniques, and generally better memory usage, and re factoring.
Anyone know of a good book, that's worth the read?
Jon Skeet's "C# in Depth" is pretty good: http://www.amazon.com/C-Depth-Jon-Skeet/dp/1933988363/ref=sr_1_1?ie=UTF8&s=books&qid=1259183768&sr=8-1
Effective C# and More Effective C# by Bill Wagner come highly recommended
If you're a very good C# dev, you should perhaps look beyond a certain language and technology and try: Domain Driven Design. It's a great book and promotes ideas that help writing great software.
The best book I have found for C# internals is CLR via C# by Jeffrey Richter.
Not a C# book per se, but Design Patterns (Gamma et al) might be a good introduction to more abstract, architectural concepts.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
Are there any good C# focused blogs and/or podcasts out there?
Audio Podcasts:
.NET Rocks
CodeCast
Coding QA
Deep Fried Bytes
Hanselminutes
Herding Code
Jesse Liberty YapCast
Pluralcast
TheSmackdown
Spaghetti Code Podcasts
Ms Dev Show
Eric Lippert works on the C# team and often talks about language design choices. As for podcasts, I would check out .NET Rocks! not exactly c# or even always .NET specific, but still might help you out some.
Checkout Scott Hansleman's podcast, Hanselminutes. Scott talks about various .NET related tools and technologies every week and is always very interesting.
Check out this SO thread - tons of useful links
Here you go:
Visual C# Developer Center
C-sharpcorner
Csharpfriends
If it's just the language C#, I would recommend
C# team blogs and
C# Frequently Asked Questions where the team posts
Make sure you read Krzysztof Cwalina blog of .NET framework guidelines.
HerdingCode is a podcast I quite enjoy, it's run by 4 .NET bloggers. Although it's not exactly C# specific, it's in the area.
I'm not aware of anything purely in C#, but if you're interested in seeing code, try these...
A code-focussed video podcast, often in C#: http://www.dnrtv.com/.
Also, http://www.dimecasts.net/.
DNRTV definitely had some nice Bill Wagner episodes you'd be interested in.
Visual C# Community on MSDN.
They have MVPs blogs, twittes and some good links :)