Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

Синхронизация   Найти похожие ветки 

 
Lampa   (2004-06-25 20:09) [0]

В программе (т.е. в главном потоке) объявлена глобальная переменная, и создается  второй поток, который изменяет значение этой переменной. Нужно синхронизировать такое действие?


 
default ©   (2004-06-25 20:10) [1]

зависит от ситуации


 
Lampa   (2004-06-25 20:19) [2]

Например?

В главном модуле программы, есть переменная (integer), второй запущенный поток может иногда изменять ее.
Правда есть еще и третий поток, который считывает эту переменную.


 
Fay ©   (2004-06-25 20:19) [3]

тогда ой 8)


 
Lampa   (2004-06-25 20:20) [4]


> Fay ©   (25.06.04 20:19) [3]

не понял :)


 
default ©   (2004-06-25 20:25) [5]

сам пронализ-уй ситуацию на возможные глюки


 
Lampa   (2004-06-25 20:27) [6]

это значит надо?

А что вообще будет если не синхронизировать потоки (тогда когда это надо), ведь и так работает же :)  просто интересно знать, на самом деле понятно что так делать нельзя.


 
default ©   (2004-06-25 20:29) [7]

кстати если будешь менять значение глобальной переменной через InterlockedExchangeAdd можешь не о чём не бояться


 
default ©   (2004-06-25 20:32) [8]

Lampa   (25.06.04 20:27) [6]
Windows система с вытесняющей многозадачностью, никогда не известно в какой момент управление будет передано на другой поток
(если бы система была с вытесняющей многозад-ью проблем бы не было - например поток выполнив какую-то свою работу(или еёчасть) посред-ом API ф-ии говорит ОС - можешь передавать упр-ие другому потоку, но сам пон-ешь тогда возможна была бы монополия на процессорное время)


 
Lampa   (2004-06-25 20:43) [9]


> default ©   (25.06.04 20:29) [7]

Да, но если у меня переменная String и мне надо ее изменить?

Значит надо таки синхронизацию выполнять.

А если у меня другая ситуация: в другом потоке крутится цикл, и если значение глобальной переменной равняется там например какому-то числу, то выполняется определенное действие.
В то время как из главного модуля программы, эту переменную можно изменить (чтобы условии в другом потоке сработало), так здесь нужно выполнять синхронизацию, и если да, то как?


 
default ©   (2004-06-25 21:02) [10]

Lampa   (25.06.04 20:43) [9]
в твоём случае пожалуй не надо


 
Lampa   (2004-06-25 21:27) [11]


> default ©   (25.06.04 21:02) [10]



> Lampa   (25.06.04 20:43) [9]

Даже если эта глоб. переменная находится в главном модуле (в первичном потоке)?


 
default ©   (2004-06-25 21:47) [12]

Lampa   (25.06.04 21:27) [11]
ну у тя она в одном месте пишется, в другом читается
если так боишься в какие-нибудь критические секции работу с разделяемыми данными засунь


 
Lampa   (2004-06-25 22:03) [13]

Ок, спасибо.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.03 c
14-1087417843
AlexG
2004-06-17 00:30
2004.07.11
Людские странности...


1-1087912779
Buster
2004-06-22 17:59
2004.07.11
При изменении кода программа перестает запускаться из под Делфи


14-1088128632
Думкин
2004-06-25 05:57
2004.07.11
С днем рождения! 25 июня


6-1084537189
Leo_777
2004-05-14 16:19
2004.07.11
Люди добрые и умные, поделитесь знаниями...


11-1072624082
Gandalf
2003-12-28 18:08
2004.07.11
Чаво нам добавить в Чаво?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский