Вам нужно знать модель памяти .NET, в основном. Не обращайте внимания на то, какие оптимизации выполняются в данный момент - код для модели.
Я бы рекомендовал эту запись в блоге Джо Даффи в качестве хорошей отправной точки.
Я также рекомендовал бы, чтобы вы не свернули свой собственный код без блокировки. Это просто слишком тяжело для смертных, ИМО. Используйте фреймворки, такие как Parallel Extensions (в .NET 4.0), которые делают то, что вам нужно.