я пишу некоторый код, который в основном получает данные из сокета, выполняет десериализацию, а затем передает моему приложению. Десериализованные объекты могут быть сгруппированы по их идентификаторам (идентификатор создается в процессе десериализации).
чтобы повысить производительность моего приложения, я хотел использовать новые возможности параллелизма, которые появились в C# 4.0. единственное ограничение, которое у меня есть, заключается в том, что 2 потока не могут получить доступ к объекту с одним и тем же идентификатором. теперь я знаю, что могу просто выполнить lock() для объекта синхронизации, который будет помещен внутри объекта, но я хочу избежать этих блокировок (здесь проблема с производительностью).
Дизайн, о котором я думал:
- создайте какой-нибудь разделитель, который будет разделять данные по идентификатору (это гарантирует, что каждый буфер, который я получу, всегда будет иметь одну и ту же группу идентификаторов объектов вместе).
- назначить поток с помощью TPL PLINQ
может кто-нибудь предложить мне некоторые источники, которые делают это?