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


Потокобезопасность
Atom Reply
10/30/2010


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

Tags:


Thanks:




6 Answers
Mikhail Sukhov

Avatar
Date: 10/30/2010
Reply


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

anothar

Avatar
Date: 10/30/2010
Reply


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

Mikhail Sukhov

Avatar
Date: 10/30/2010
Reply


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


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

anothar

Avatar
Date: 10/30/2010
Reply


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

Mikhail Sukhov

Avatar
Date: 10/31/2010
Reply


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


Ecng.Collection.SynchronizedXXX
Thanks:

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

Avatar
Date: 12/17/2010
Reply


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

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


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy