← Zurück

Потокобезопасность

Михаил, добрый день/вечер/утро, при написании коннектора к транзаку возникло несколько вопросов про iTrader-решил что проще спросить сразу у Вас чем тестировать самому. Если я правильно понимаю, то скажем для того чтобы узнать что у Security что-то изменилось достаточно попросить у iTrader все security и подписаться на событие INotifyPropertyChanged у нужной? Если это так то Security потокобезопасна? Ведь поток Callback изменяет данные, а пользователь может их запросить из любого потока.

War dieses Thema hilfreich?

Thema teilen

Kommentare (6)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

Обращение к свойствам Security потокобезопасно и не зависит от количества потоков. Потому что это обращение к обычной переменной.

anothar
anothar Autor

Оно безопасно если при этом callback поток(т.е. поток который принимает данные с сервера) не начнет менять ее свойства. Это относится не только к security. То же самое если например мы передаем коллекцию пользователю, а в этот момент в нее другой поток что-то добавляет9 по умолчанию коллекции не потокобезопасны.

Mikhail Sukhov
Mikhail Sukhov

Андрей Ефимов: Оно безопасно если при этом callback поток(т.е. поток который принимает данные с сервера) не начнет менять ее свойства. Это относится не только к security. То же самое если например мы передаем коллекцию пользователю, а в этот момент в нее другой поток что-то добавляет9 по умолчанию коллекции не потокобезопасны.

Коллекции != свойство. Коллекции имеют сложную структуру. Свойства (такие как у Security) атомарны и потокобезопасны.

anothar
anothar Autor

Спасибо. Михаил. Вы правы))) А есть ли у Вас какая-то потокобезопасная коллекция(какая коллекция возвращается в QuikTrader)? а то я не нашел в апи справку по Ecng.Common((

Mikhail Sukhov
Mikhail Sukhov

Андрей Ефимов: Спасибо. Михаил. Вы правы))) А есть ли у Вас какая-то потокобезопасная коллекция(какая коллекция возвращается в QuikTrader)? а то я не нашел в апи справку по Ecng.Common((

Ecng.Collection.SynchronizedXXX

Иванов Андрей
Иванов Андрей

Пишите под .NET 4, там для всех типов коллекций есть многопоточные коллекции -- вам же не надо сохранять обратную совместимость для кучи клиентов =)

Неймспейс System.Collections.Concurrent.