Влияют ли потоки в очереди на не поточно-безопасные объекты в одном классе? - PullRequest
0 голосов
/ 07 мая 2009

Если я создаю поток с ThreadPool.QueueUserWorkItem и этот поток не ссылается на объект, который не является потокобезопасным, скомпрометирует ли он этот объект, не безопасный для потока?

[Изменить] Под не поточно-ориентированным объектом я имею в виду сторонний интерфейс к программируемому логическому контроллеру, который не имеет возможности открывать одновременные соединения или поддержку параллелизма.

Полагаю, я просто хотел быть уверен, что, поставив в очередь потоки в том же классе, что и моя ссылка на этот объект, я бы каким-то образом не поставил под угрозу его безопасность потоков так, как я не осознавал.

Ответы [ 2 ]

2 голосов
/ 07 мая 2009

Нитки не волшебны. Если они не ссылаются на некоторые данные, они не могут повлиять на них.


РЕДАКТИРОВАТЬ: Если у вас есть код, который отслеживает создание новых потоков и отслеживает QueueUserWorkItem, и если монитор изменяет эти не поточно-ориентированные объекты, то да, это имеет место.

В противном случае, нет.

0 голосов
/ 07 мая 2009

Пока новый поток прямо или косвенно не ссылается на не потокобезопасный объект, он не повлияет на него.

Небольшой технический пункт. Вызов ThreadPool.QueueUserWorkItem не обязательно порождает новый поток. Вместо этого он гарантирует, что предоставленный делегат будет запущен в другом потоке. Это может привести к созданию потока, или более вероятным случаем будет использование существующего потока, который уже выделен для пула потоков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...