Monday, January 31, 2011

Distributed Reader-Writer Mutex

A new article Distributed Reader-Writer Mutex describes design and implementation of a simple yet scalable rw mutex. The mutex uses an interesting technique of per-processor data. Results of a benchmark against plain pthread_rwlock_t are presented.

By the way, I've changed code license on the site, now all code is covered by the Simplified BSD License.

Thursday, January 27, 2011

Per-processor Data

A new article Per-processor Data is available under Lockfree/Tips&Tricks section. It introduces an interesting technique of per-processor data, as well as some implementation aspects.

Case Study: MultiLane - a concurrent blocking multiset

I've published a new article Case Study: MultiLane - a concurrent blocking multiset. It's about Dave Dice et al  paper of the same name. The paper describes MultiLane technique which can be used to improve scalability of producer-consumer systems. I also describe some alternative architectural approaches to the problem.

Monday, January 24, 2011

Lockfree Tips&Tricks


I've kicked off a new subsection Lockfree/Tips&Tricks, in which I collect various separate topics related to design and implementation of synchronization algorithms. There are 2 articles for warm-up: Spinning (active/passive/hybrid, pros&cons, implementation) and Pointer Packing.

Saturday, January 22, 2011

Lock-Free Link Pack

Check out updated Lock-Free Links page. There you will find links to books, blogs, websites, research groups, separate articles and some sources to study. Perhaps, more than I ever needs to know about synchronization algorithms :)
Have I read all that? Well, mostly, but not all :)

Friday, January 21, 2011

Case Study: FastFlow Queue


I've posted a new article Case Study: FastFlow Queue, in which I examine design and implementation of a nonblocking single-producer/single-consumer queue, which used as a base building block in the FastFlow multicore programming library. In the second part of the article I design and implement "a better" queue. Benchmark results confirm better performance and scalability.

By the way, thanks to all who has participated in the poll on left right pane.

Saturday, January 8, 2011

Alternative web addresses

It seems that Google hosting periodically has outages. Just in case you have problems accessing the main URL, you can use the following one:

Friday, January 7, 2011

Differential Reference Counting

Just published an article on Differential Reference Counting - reference counting algorithm which provides strong thread-safety and permits useful use cases that are not permitted by plain atomic reference counting (like boost::shared_ptr).

Wednesday, January 5, 2011

Lazy Concurrent Initialization

I've added an article on Lazy Concurrent Initialization. It describes 2 types of initialization - blocking and non-blocking, describes available implementations in Windows API, POSIX threads and C1x/C++0x and provides guidelines for efficient implementation based on atomic operations and fine-grained memory fences.

Tuesday, January 4, 2011

What new materials would you like to appear on 1024cores?


I would like you to share you preferences regarding what kinds of information you would like to appear on 1024cores in the near future. You know, I need to kind of prioritize everything I may potentially share there, and your input is important to me.

I've started a poll on the right pane >>>

I have a lot of thoughts and ideas on lock-free algorithms: about queues and reader-writer problem, about object life-time management, lazy initialization, caching, etc

I may share more thought on scalable architecture: message-passing and pipelining, overloads, patterns, etc.

I may share thing related to parallel computations: some principles, caveats, problems and solutions, patterns and anti-patterns, etc.

Concurrency Myth Busters is going to be a section on common misconceptions around multicore, concurrency and parallelism.

I may highlight some hardware aspects like caches, NUMA and HyperThreading.

There are also Links, Libraries and Tools.

And if you check Other, please, drop a comment here regarding what exactly you mean.

Also don't hesitate to share here other thoughts, comments and suggestions on the site here.

Thank you.

Monday, January 3, 2011

Parallel Disk IO

I've added an article on Parallel Disk IO Subsystem:
It's based on my Wide Finder 2 entry, but it's quite general and describes common aspects and patterns and anti-patterns. It shows how not to under-subscribe nor over-subscribe CPUs and disks, how to keep data hot in caches and memory, how to automatically adapt to various external conditions, etc.

Here is also a brief write-up on the Wide Finder 2 entry itself: