Если у вас нет предыдущего опыта работы с многопоточностью, я бы порекомендовал вам сначала ознакомиться с основами, взглянув на различные ресурсы: https://stackoverflow.com/questions/540242/book-or-resource-on-c-concurrency
Создание всей вашей многопоточной библиотеки требует совершенно нового архитектурного подхода. Если вы просто повернетесь и начнете устанавливать блокировки повсюду в своем коде, вы в конечном итоге сделаете свой код очень громоздким и даже не добьетесь увеличения производительности.
Лучшее параллельное программное обеспечение - без блокировок и без ожидания ... этого трудно достичь в C # (.NET), так как большинство ваших коллекций не защищены от блокировок, ожидания или даже поточно-ориентированных. Существуют различные обсуждения структур данных без блокировки . Многие люди ссылались на статьи Бойета (которые ДЕЙСТВИТЕЛЬНО хороши), и некоторые люди обсуждали параллельную библиотеку задач как следующую вещь в параллельности .NET, но TPL действительно не дает вам много условия потоковобезопасных коллекций.
.NET 4.0 выходит с Collections.Concurrent , который должен очень помочь.
Делать всю вашу библиотеку параллельной не рекомендуется, так как она не была разработана с учетом параллелизма с самого начала. Следующим вариантом будет просмотреть вашу библиотеку и определить, какие ее части действительно являются подходящими кандидатами для многопоточности, а затем вы можете выбрать для них лучшее решение для параллелизма и реализовать его. Главное, что нужно помнить, это то, что когда вы пишете многопоточный код, параллелизм должен привести к увеличению пропускной способности вашей программы. Если увеличение пропускной способности не достигается (т. Е. Вы либо соответствуете, либо пропускная способность меньше, чем в последовательной версии), то вам просто не следует использовать параллелизм в этом коде.