Синхронизация доступа к данным
Если я использую потоки, которые обращаются к глобальным переменным, то естесственно надо организовывать их синхронизацию.
А вот если есть класс, который имеет данные и методы, работающие с этими данными. В классе также есть таймер, который в свою очередь так же обращается к данным класса. Насколько я понимаю, таймер - то же своеобразный поток, значит тоже надо организовывать синхронизацию, или нет?
Цитата:
Originally posted by VBuser
Чего то раньше программировал и не задумывался вот над чем.
Если я использую потоки, которые обращаются к глобальным переменным, то естесственно надо организовывать их синхронизацию.
А вот если есть класс, который имеет данные и методы, работающие с этими данными. В классе также есть таймер, который в свою очередь так же обращается к данным класса. Насколько я понимаю, таймер - то же своеобразный поток, значит тоже надо организовывать синхронизацию, или нет?
Чего то раньше программировал и не задумывался вот над чем.
Если я использую потоки, которые обращаются к глобальным переменным, то естесственно надо организовывать их синхронизацию.
А вот если есть класс, который имеет данные и методы, работающие с этими данными. В классе также есть таймер, который в свою очередь так же обращается к данным класса. Насколько я понимаю, таймер - то же своеобразный поток, значит тоже надо организовывать синхронизацию, или нет?
На сколько я понимаю, таймер это не поток а объект. И обращается он к данным объектов, т.е. экземпляпам некоего класса. Следовательно если ты создашь два экземпляра одного класса, то и их данные будут хранится в разных местах (физически) и соответсвенно будет порождено два объекта таймер, которые будут обрабатывать событие OnTimer последовательно. Сначала второй, потом первый и обращаться они будут к данным соответсвующих объектов.
Цитата:
Originally posted by VBuser
Чего то раньше программировал и не задумывался вот над чем.
Если я использую потоки, которые обращаются к глобальным переменным, то естесственно надо организовывать их синхронизацию.
А вот если есть класс, который имеет данные и методы, работающие с этими данными. В классе также есть таймер, который в свою очередь так же обращается к данным класса. Насколько я понимаю, таймер - то же своеобразный поток, значит тоже надо организовывать синхронизацию, или нет?
Чего то раньше программировал и не задумывался вот над чем.
Если я использую потоки, которые обращаются к глобальным переменным, то естесственно надо организовывать их синхронизацию.
А вот если есть класс, который имеет данные и методы, работающие с этими данными. В классе также есть таймер, который в свою очередь так же обращается к данным класса. Насколько я понимаю, таймер - то же своеобразный поток, значит тоже надо организовывать синхронизацию, или нет?
Таймер - не поток. Он посылает сообщения в очередь. Синхронизация нужна в таком случае только тогда, когда несколько экземпляров класса из разных потоков выборки сообщений таймера обращаются к статической переменной.