Showing results for April 2011 - Page 3 of 3 - The Old New Thing

Apr 8, 2011
0
0

Lock-free algorithms: The singleton constructor (answer to exercises)

Raymond Chen
Raymond Chen

A few days ago, I asked you to make an existing class multithread-safe. The class caches objects called which are indexed by a 32-bit ID. The cache is implemented as an array that dynamically resizes as more items are added to it. A naïve multithreaded version might use a slim reader-writer lock with shared access on reads, exclusive access...

Code
Apr 7, 2011
0
0

Lock-free algorithms: The one-time initialization

Raymond Chen
Raymond Chen

A special case of the singleton constructor is simply lazy-initializing a bunch of variables. In a single-threaded application you can do something like this: This works fine in a single-threaded program, but if the program is multi-threaded, then two threads might end up trying to lazy-initialize the variables, and there are race conditions w...

Code
Apr 6, 2011
0
0

Lock-free algorithms: Choosing a unique value (solutions)

Raymond Chen
Raymond Chen

Last time, I left a warm-up exercise consisting of a code fragment which tries to compute a unique process-wide value. Here it is again: It may be easier to enumerate what the function does right rather than what it does wrong. Um, the words are correctly-spelled. That's about it. Damien was the first to note that the author basically...

Code
Apr 6, 2011
0
0

Lock-free algorithms: The singleton constructor

Raymond Chen
Raymond Chen

The first half may be familiar to many (most?) readers, but there's an interesting exercise at the bottom. A very useful pattern for the Interlocked* functions is lock-free lazy initialization via . Yes, that's a really long function name, but it turns out every part of it important. This is a double-check lock, but without the locking. Inste...

Code
Apr 5, 2011
0
0

Lock-free algorithms: Choosing a unique value (warm-up)

Raymond Chen
Raymond Chen

Here's a snippet of code whose job is to generate a unique number within the process. Here's some reference reading to get yourself in the mood. Caution: It may or may not be useful. Criticize this code fragment.

Code
Apr 4, 2011
0
0

Windows is not a .NET Framework delivery channel either

Raymond Chen
Raymond Chen

We learned a while ago that Windows is not an MFC delivery channel. And, since you asked, it's not a .NET Framework delivery channel either. If you're developing a program that uses the .NET Framework, you have to have a backup plan if the version of the .NET Framework you need is not installed on the computer. This might mean including a copy o...

Code
Apr 1, 2011
0
0

The funniest joke I've ever told (to a three-year-old)

Raymond Chen
Raymond Chen

I've tested this joke on several children ages three and four, and it never fails. There were two kittens walking down the street, and one of them fell on its butt! I developed this joke for one of my honorary nieces. She had just started to learn about joke-telling and asked me to tell her a joke. One of the keys to joke-telling is to know you...

Non-Computer
Apr 1, 2011
0
0

The introduction of whimsical teasing in Comic Chat

Raymond Chen
Raymond Chen

A few months after my post on the sad demise of whimsical teasing in Comic Chat, I received a piece of email from none other than the author of Comic Chat, DJ Kurlander: I was the person that started the Comic Chat project in Microsoft Research and was responsible for that line, "This person is too lazy to create a profile entry." Not a whole ...

History